OpenStack搭建史上最详细步骤 (快速入手)

前提环境

搭建openstack平台所需要的两个镜像包:CentOS-7-X86_64-DVD-1804.iso 和 chinaskill_cloud_iaas.iso镜像文件。

VMware上准备两台虚拟机,分别作为controller(控制)节点和compute节点. 下面是VMware上虚拟机的基础配置。

compute&&controller

双网卡,NAT模式和仅主机模式,配置硬盘各给50G

多添的一块网卡作为openstack对外提供服务的网络(创建云主机实例时使用的IP地址),默认的第一块网卡作为openstack本地服务的IP地址(访问openstack的WEB界面时的IP地址)

compute要加两块20G虚拟硬盘

controller内存4G以上 处理器两个以上

这里的NET模式的子网地址给的是100段(cidr)WEB访问的IP地址,仅主机模式的子网地址给的是200段的
​
这里controller节点给的IP是192.168.100.10
​
        compute节点给的IP是192.168.100.20
​
        网络配置器的网关设置的是192.168.100.02
​

一、基本配置

修改主机名

#controller执行 
​
[root@controller ~]hostnamectl set-hostname controller 
​
#compute 
​
[root@compute ~]hostnamectl set-hostname compute 
​
##修改后重新连接终端 
​
##MobaXterm中按ctrl+d 退出 按R重新登陆 
​
##SecureCRTPortable中按ctrl+d 退出 按回车重新登陆 
​
##直接bash执行也可,不过后面执行脚本可能报错
​
##su也可以使之生效

 

配置网络

1.利用vi文本编辑器去配置虚拟机的虚拟网卡

#controller

[root@controller ~]vi /etc/sysconfig/network-scripts/ifcfg-ens33                #ifcfg-需要配置的网卡名
​
BOOTPROTO=dhcp            #修改为static静态IP
​
ONBOOT=no                 # 修改为yes,设为开机自启
​
#文件最后添加
​
IPADDR=192.168.100.10            #配置的IP地址,根据虚拟网络编辑器的网段来配置
​
NETMASK=255.255.255.0            #子网掩码,也可以用PREFIX=24来表示
​
GATEWAY=192.168.100.2            #网关
​
DNS1=114.114.114.114             #DNS域名解析
​
DNS2=8.8.8.8                     #备用DNS域名解析
​
# :wq (保存退出)
​

2.配置好后重启网络服务,使配置生效

[root@controller ~]systemctl restart network              #第一种重启网络的方法
[root@controller ~]service network restart                  #第二种重启网络的方法
​
​
#可能出现的问题:网络重启报错先停掉NetworkManager
[root@controller ~]systemctl stop NetworkManager
​
#也可以直接将NetworkManager,disable掉

3.看是否能ping通,利用远程工具(Xshell,SecureCRT,mobaXterm等)去连接虚拟机

[root@controller ~]ifconfig                                              #查看网卡的网络参数
​
[root@controller ~]ping baidu.com
​
第二快网卡无需配置,后面跑脚本的时候会自动将它kill掉,作为创建云主机实例的IP地址

4.当第一台VM虚拟机的网卡配置好,用命令或手动点击将VM虚拟机关机后,对它进行克隆,克隆出的虚拟机作为compute节点

poweroff                                      #第一种关机命令
shutdown -h now                               #第二种关机命令
init 0                                        #第三种关机命令
记得克隆时最好选择完全克隆,它是独立的,并不依赖controller节点,当你删掉controller节点也不会影响到compute节点。
​
​
克隆完成后重命名,修改它的配置,给compute虚拟机增加两块20G的硬盘,分别提供给cinder和swift组件
​
​
修改克隆机的IP地址IPADDR=192.168.100.20 
​
​
删除/etc/sysconfig/network-scripts/ifcfg-ens33文件中的UUID一行,UUID不能重复
​
​
在vi编辑器命令行模式下按dd删除光标所在的一行(因为克隆虚拟机的配置是controller节点的配置)
​

二、基本环境

1.配置域名解析文件

#contreller && compute

[root@controller ~]vim /etc/hosts
​
#结尾添加这两行IP地址+主机名
​
192.168.100.10    controller
​
192.168.100.20    compute
​
​
​
[root@controller ~]scp /etc/hosts 192.168.100.20:/etc/hosts
#将controller节点上的配置文件传输到compute节点上将其替换
​

#这一步做完后,后面就可以直接使用域名(controller,compute)来代替IP地址了

2.挂载镜像文件

#controller

[root@controller ~]mkdir /opt/{centos,openstack}             #创建两个需要被挂载的本地路径
​
#yum源配置好后,将iaas镜像上传,这里centos镜像虚拟机配置使用了,它默认存储在/dev/cdrom 或 /dev/sr0中,可以直接将存放centos镜像的路径挂载到/opt/centos下了


[root@controller ~]mount /dev/cdrom  /opt/centos/
​
#以只读方式挂载
​
#我们也可以在/etc/fstab中进行配置,让它开机自动挂载,这样在启动虚拟机时就不用再手动挂载了(用于直接挂载到挂载点的时候使用)
​
[root@controller ~]vim /etc/fstab
​
#在结尾添加
​
/dev/cdrom            /opt/centos               iso9660 defaults             0    0
​
 
#接下来在挂载iaas镜像
​
[root@controller ~]mount chinaskills_cloud_iaas.iso  /mnt/
​
[root@controller ~]cp -rvf /mnt/* /opt/openstack
​
[root@controller ~]umount /mnt/
​

3.配置本地yum源

#controller

#备份本地网络yum源
[root@controller ~]mv /etc/yum.repos.d/* /mnt/ 
​
[root@controller ~]vi /etc/yum.repos.d/centos.repo
​
[centos]
​
name=centos
​
baseurl=file:///opt/centos
​
gpgcheck=0
​
enabled=1
​
[iaas]
​
name=iaas
​
baseurl=file:///opt/openstack/iaas-repo
​
gpgcheck=0
​
enabled=1
​
#配置好本地yum源后,我们需要清理一下yum源缓存,和列出能用的yum仓库中的包
​
[root@controller ~]yum makecache 
​
#或
​
[root@controller ~]yum clean all;yum makecache 
​
#或
​
[root@controller ~]yum clean all;yum repolist
​

 如图挂载成功

#compute

#备份本地网络yum源
[root@compute ~]mv /etc/yum.repos.d/* /mnt/ 
​
#创建repo文件
​
[root@compute ~]vi /etc/yum.repos.d/centos.repo
​
[centos]
​
name=centos
​
baseurl=ftp://192.168.100.10/centos
​
gpgcheck=0
​
enabled=1
​
[iaas]
​
name=iaas
​
baseurl=ftp://192.168.100.10/openstack/iaas-repo
​
gpgcheck=0
​
enabled=1
​

[root@compute ~] yum makecache

4.搭建ftp服务器,开启并设置自启

#controller

[root@controller ~]yum install vsftpd -y ​

[root@controller ~]vi /etc/vsftpd/vsftpd.conf 
​
#添加 
anon_root=/opt/ 
#保存退出 
​
​
#或:
echo "anon_root=/opt/" >> /etc/vsftpd/vsftpd.conf 
​
​
#重启服务,使修改的配置生效,并设置开机自启
[root@controller ~]systemctl start vsftpd && systemctl enable vsftpd 
​

#comput

#验证ftp 
​
[root@compute ~]curl -L ftp://192.168.100.10                       #ftp://controllerIP 
​
#这里连接成功会返回controller下opt目录内信息
​
​
​
[root@compute ~]yum clean all;yum makecache 
​
#或
​
[root@compute ~]yum clean all;yum repolist 
​

5.关闭防火墙

#contreller && compute

 #两个节点都需要关闭
[root@controller ~]systemctl stop firewalld.service && systemctl disable firewalld.service                      #关闭防火墙和移除防火墙
​
[root@controller ~]yum remove -y NetworkManager firewalld
​
[root@controller ~]yum -y install iptables-services
​
[root@controller ~]systemctl enable iptables
​
[root@controller ~]systemctl restart iptables
​
[root@controller ~]iptables -F
​
[root@controller ~]iptables -X
​
[root@controller ~]iptables -Z
​
[root@controller ~]service iptables save                #清空规则
​

##可以只关闭防火墙而不写入配置,在将要执行的脚本中会卸载掉防火墙,selinux同理,此时关闭是为了后面的ftp

6.关闭SELinux

#contreller && compute

#临时关闭selinux模式和永久关闭selinux规则
​
[root@controller ~]setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 
​
​
​
[root@controller ~]getenforce                          #检测是否关闭selinux 
​
​
​
#可能出现问题:ssh远程连接慢时执行,一般不需要 
​
[root@controller ~]sed -i -e 's/#UseDNS yes /UseDns no/g' -e 's/GSSAPIAuthentcation 
​
yes/GSSAPIAuthenticationno/g' /etc/ssh/sshd_config 
​

三、编辑环境变量

#contreller && compute

[root@controller ~]yum install iaas-xiandian -y                          #安装xiandian包 

分盘(根据自己的情况)

# compute 分盘

#这里可以不用分盘了,因为我们一开始就多配置了两块虚拟硬盘,使用fdisk -l查看
[root@controller ~]fdisk /dev/sdb
​
n
​
#两次回车 
​
+100G
​
n
​
p
​
#三次回车 
​
w
​
lsblk       #查看 
​

1.修改xiandian服务的配置文件

# controller

#编辑文件/etc/xiandian/openrc.sh,此文件是安装过程中的各项参数,根据每项参数上一行的说明及服务器实际情况进行配置。 
​
​
[root@controller ~]cd /etc/xiandian/ 
​
[root@controller ~]sed -i "/=/s/#//g" openrc.sh 
​
[root@controller ~]sed -i "/PASS/s/PASS=/PASS=000000/g" openrc.sh 
​
#或:
[root@controller ~]vi /etc/xiandian/openrc.sh
​
#进入配置文件后需要在命令行模式下敲
:%s/^#//g                                                      # 一行中只带有一个#注释的,作用去除#注释
:%s/PASS=/PASS=000000/g                       # 将PASS=全部替换成PASS=000000,这样省的我们自己手动敲很多代码了
​
​
​

还需要手动修改,需要修改的地方已在后面增加注释        有的地方还需输入六个零

--------------------system Config--------------------##
​
Controller Server Manager IP. example:x.x.x.x
​
HOST_IP=192.168.100.10                            #controller节点的IP地址
​
Controller HOST Password. example:000000
​
HOST_PASS=000000
Controller Server hostname. example:controller
​
HOST_NAME=controller                              #controller节点的主机名
​
Compute Node Manager IP. example:x.x.x.x
​
HOST_IP_NODE=192.168.100.20                        #compute节点的IP地址
​
Compute HOST Password. example:000000
​
HOST_PASS_NODE=000000
​
Compute Node hostname. example:compute
​
HOST_NAME_NODE=compute                           #compute节点的主机名
​
--------------------Chrony Config-------------------##
​
Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
​
network_segment_IP=192.168.100.0/24               #控制节点的网段
​
--------------------Rabbit Config ------------------##
​
user for rabbit. example:openstack
​
RABBIT_USER=openstack                           #rabbit用户名
​
Password for rabbit user .example:000000
​
RABBIT_PASS=000000
​
--------------------MySQL Config---------------------##
​
Password for MySQL root user . exmaple:000000
​
DB_PASS=000000
​
--------------------Keystone Config------------------##
​
Password for Keystore admin user. exmaple:000000
​
DOMAIN_NAME=demo                          #OpenStack中登录页面的认证域名
ADMIN_PASS=000000
DEMO_PASS=000000
​
Password for Mysql keystore user. exmaple:000000
​
KEYSTONE_DBPASS=000000
​
--------------------Glance Config--------------------##
​
Password for Mysql glance user. exmaple:000000
​
GLANCE_DBPASS=000000
​
Password for Keystore glance user. exmaple:000000
​
GLANCE_PASS=000000
​
--------------------Nova Config----------------------##
​
Password for Mysql nova user. exmaple:000000
​
NOVA_DBPASS=000000
​
Password for Keystore nova user. exmaple:000000
​
NOVA_PASS=000000
​
--------------------Neturon Config-------------------##
​
Password for Mysql neutron user. exmaple:000000
​
NEUTRON_DBPASS=000000
​
Password for Keystore neutron user. exmaple:000000
​
NEUTRON_PASS=000000
​
metadata secret for neutron. exmaple:000000
​
METADATA_SECRET=000000
​
Tunnel Network Interface. example:x.x.x.x
​
INTERFACE_IP=192.168.100.10                  #隧道接口的IP地址,填当前节点的IP地址即本机IP
​
External Network Interface. example:eth1
​
INTERFACE_NAME=ens36                           #第二块网卡作为外网,对外提供服务(云主机实例)的网卡名
​
External Network The Physical Adapter. example:provider
​
Physical_NAME=provider                         #物理适配器的外网
​
First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
​
minvlan=5                                      #VLAN最小从5开始(自己根据需要来给定)
​
Last Vlan ID in VLAN RANGE for VLAN Network. example:200
​
maxvlan=201                                     #VLAN最大到201
​
--------------------Cinder Config--------------------##
​
Password for Mysql cinder user. exmaple:000000
​
CINDER_DBPASS=000000
​
Password for Keystore cinder user. exmaple:000000
​
CINDER_PASS=000000
​
Cinder Block Disk. example:md126p3
​
BLOCK_DISK=sdb                                  #compute节点增加的第一快磁盘名称(lsblk查看)
​
--------------------Swift Config---------------------##
​
Password for Keystore swift user. exmaple:000000
​
SWIFT_PASS=000000
​
The NODE Object Disk for Swift. example:md126p4.
​
OBJECT_DISK=sdc                                 #compute节点的增加的第二快磁盘名称
​
The NODE IP for Swift Storage Network. example:x.x.x.x.
​
STORAGE_LOCAL_NET_IP=192.168.100.20             #对象存储的IP地址
​
--------------------Heat Config----------------------##
​
Password for Mysql heat user. exmaple:000000
​
HEAT_DBPASS=000000
​
Password for Keystore heat user. exmaple:000000
​
HEAT_PASS=000000
​
--------------------Zun Config-----------------------##
​
Password for Mysql Zun user. exmaple:000000
​
ZUN_DBPASS=000000
​
Password for Keystore Zun user. exmaple:000000
​
ZUN_PASS=000000
​
Password for Mysql Kuryr user. exmaple:000000
​
KURYR_DBPASS=000000
​
Password for Keystore Kuryr user. exmaple:000000
​
KURYR_PASS=000000
​
--------------------Ceilometer Config----------------##
​
Password for Gnocchi ceilometer user. exmaple:000000
​
CEILOMETER_DBPASS=000000
​
Password for Keystore ceilometer user. exmaple:000000
​
CEILOMETER_PASS=000000
​
--------------------AODH Config----------------##
​
Password for Mysql AODH user. exmaple:000000
​
AODH_DBPASS=000000
​
Password for Keystore AODH user. exmaple:000000
​
AODH_PASS=000000
​
--------------------Barbican Config----------------##
​
Password for Mysql Barbican user. exmaple:000000
​
BARBICAN_DBPASS=000000
​
Password for Keystore Barbican user. exmaple:000000
​
BARBICAN_PASS=000000
​
​
​

# controller

#通过scp方法将修改过的xiandian配置文件传输到compute节点
​
#scp发送: 
​
[root@controller ~]scp -rp openrc.sh [email protected]:/etc/xiandian/openrc.sh 
​
# 或 
​
[root@controller ~]scp !$ compute:/etc/xiandian/openrc.sh #此时应写入host,否则用IP代替compute 
​
#等效于 
​
[root@controller ~]scp /etc/xiandian/openrc.sh compute:/etc/xiandian/openr.sh 
​
##将controller目录下的文件传输到computer下,即把配置好的文件发给另一个节点(并替换对应文件) 
​

# compute

#在compute节点中配置文件/etc/xiandian/openrc.sh下修改第69行的IP地址,改成对应节点的IP地址(在compute节点只需修改这一行) 
​
[root@compute ~]INTERFACE_IP=192.168.100.20 
​
#修改完成后保存退出

四、通过脚本安装服务

1.执行脚本iaas-pre-host.sh进行安装

基础配置操作命令已经编写成shell脚本,通过脚本进行一键安装。如下:

Controller&&Compute

​ [root@controller ~]iaas-pre-host.sh ​

#安装完成后两个节点都需要Ctrl+D同时重启一下虚拟机

#或

[root@controller ~]reboot ​

今天遇到一个yum安装报错如下:

错误:软件包:glibc-2.17-196.el7.i686 (centos7)
需要:glibc-common = 2.17-196.el7
已安装: glibc-common-2.17-222.el7.x86_64 (@anaconda)
glibc-common = 2.17-222.el7
可用: glibc-common-2.17-196.el7.x86_64 (centos7)

原因:yum源没有对应版本包匹配
解决办法:

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    sed -i  's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
    
    yum repolist 
    

2.接下来开始跑部署OpenStack各个组件的脚本了

进入/usr/local/bin目录下(脚本存放的位置)

这里为了方便,我在脚本中执行了一下脚本

ls | tee 1.sh        #查看当前目录下的脚本文件并将结果发送到tee命令,tee命令将输出显示到终端,同时将其保存在1.sh文件中
​
​
#在1.sh脚本中将几个需要跑的组件脚本排序,并将不需要跑的组件脚本删掉(在1.sh中操作,需熟练掌握vi编辑器下命令行模式(默认模式)下的快捷命令,在这里会用到 yy : 复制,p : 粘贴,dd : 删除 )

controller节点执行脚本顺序 [ mysql组件,keystone组件,glance组件,nova-controller组件,neutron-controller组件,dashboard组件,cinder-controller组件,swift-controller组件 ] (跑完controller节点,再跑compute节点

compute节点执行脚本的顺序 [ nova-compute组件,neutron-compute组件,cinder-compute组件,swift-compute组件]

#给1.sh增加可执行权限
chmod +x 1.sh

执行:

./1.sh

 五、搭建完成,web访问

两边都跑完后,去浏览器输入 192.168.100.10/dashboard 访问OpenStack

恭喜完成搭建!!!(一个萌新的攻略,有不对的地方还大神指教)

完成后可以关注我~~~去看我的另一篇   T版搭建       非常详细

这是我写的第一篇所以排版不是很好,多多关照

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>