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

需要镜像的自行下载:

链接:https://pan.baidu.com/s/1ElZEnrN6VDEMlI_2Ixk1Aw 
提取码:8888


一、搭建openstack平台,需在VMware上准备两台虚拟机,分别作为controller节点和compute节点。下面是VMware上虚拟机的基础配置。

 上面内存给了4G,处理器给了两个,硬盘给了50G,这个根据个人电脑的配置来设置,不用设置太大,将虚拟机放置的位置一定不要放在C盘,多添的一块网卡作为openstack对外提供服务的网络(创建云主机实例时使用的IP地址)默认的第一块网卡作为openstack本地服务的IP地址(访问openstack的WEB界面时的IP地址),这里看你的虚拟网络编辑器里网络的信息(自行修改)。如下图所示:

我这里的NET模式的子网地址给的是100段(cidr)WEB访问的IP地址,仅主机模式的子网地址给的是200段的。这里可以根据自己的需要去进行配置。

二、开始配置虚拟机的网卡:


  1. 利用vi文本编辑器去配置虚拟机的虚拟网卡;
    vi /etc/sysconfig/network-scripts/ifcfg-#需要配置的网卡名
  2. 配置好后重启网络服务,使配置生效;
    systemctl restart network #第一种重启网络的方法
    service network restart #第二种重启网络的方法
  3. 配置好后ping自己配置好的IP地址;
    ping #IP地址
  4. 最后,配置网卡的最终目的就是利用远程工具(Xshell,SecureCRT,mobaXterm等)去连接虚拟机。接下来的服务部署都是在SecureCRT上完成。接下来按照上述步骤去进行操作截屏如下:

 

 

:wq (保存退出)

 

第二快网卡无需配置,当后面跑脚本的时候会自动将它kill掉,用作创建云主机实例的IP地址

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

poweroff #第一种关机命令
shutdown -h now #第二种关机命令
init 0 #第三种关机命令

 记得克隆时最好选择完全克隆,它是独立的,并不依赖controller节点,当你删掉controller节点也不会影响到compute节点。(不像电脑上的快捷方式)

克隆完后记得重命名(这是一个好习惯)

修改它的配置,给compute虚拟机增加两块20G的硬盘,分别提供给cinder和swift组件

四、开启克隆的虚拟机将它的网络IP地址修改(因为克隆虚拟机的配置是controller节点的配置)

 修改IP地址后的配置:

 本人在重启网卡时遇到的问题:

也可以直接将NetworkManagerdisable

五、连接SecureCRT或其它远程连接工具,进行OpenStack-国基北盛的搭建 

1.修改主机名(使得后面能过直接通过主机名去传输文件和配置ftp yum源) 

#永久修改主机名(两个节点都需要配置):
hostnamectl set-hostname controller #第一个节点
su #使修改生效

hostnamectl set-hostname compute #第二个节点
su #使修改生效

2.配置域名解析的文件(/etc/hosts

vi /etc/hosts

scp /etc/hosts 192.168.100.20:/etc/hosts
# 将controller节点上的配置文件传输到compute节点上将其替换,省的两头来回切换的敲代码了,在后面这点好处会体现的更明显

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

3.移走本地网络yum源(两个节点都需要执行)

1.mv /etc/yum.repos.d/* /media
# 将网络yum源移到media目录下
2.rm -rf /etc/yum.repos.d/*
# 删除网络yum源,*代表当前目录下的所有文件或目录

4.配置本地yum源(只需在controller节点而配置,配置centos源和iaas源)

 ​​​​​

创建两个需要被挂载的本地路劲centosiaas(这里创建的目录名称需要和yum配置文件里面的路劲目录名一样)

yum源配置好后,通过SecureCRT上自带的传输工具将iaas镜像上传,这里centos镜像我已经在做虚拟机配置的时候就使用了centos这个镜像,它默认存储/dev/cdrom /dev/sr0中,如果和我一样,就可以直接将存放centos镜像的路径挂载到/opt/centos下了(当你挂载了这个目录,这个目录就只有读的权限了)如果不希望这个目录只有读的权限我们可以向下面挂载iaas镜像一样先挂载到/mnt目录下,在cp到需要的挂载点目录下。

当出现上面的提示就说明挂载成功,并以只读方式挂载。 

接下来在挂载iaas镜像,挂载这个镜像的时候可以先将这个镜像挂在到/mnt目录下面,再将/mnt下面的所有文件复制到/opt/iaas目录下,这样重启虚拟机后也不需要再次挂载了。

 

我们也可以在/etc/fstab中进行配置,让它开机自动挂载,这样在启动虚拟机时就不用再手动挂载了(用于直接挂载到挂载点的时候使用)

上图中的挂载点有问题,应该是/opt/centos

这里注意千万不要写错了,不然会进入Ctrl+D界面,解决办法:

重启虚拟机,在加载页面时按空格键暂停,再按E键;找到linux16那一行,在最后rd.break进入救援命令模式;按Ctrl+X继续;此时进入后需要挂载sysroot目录(sysroot是交叉编译时指定临时根目录的方式) mount -o remount,rw /sysrootchroot /sysroot; 进入linux命令行界面,vi /etc/fstab 将自己写的那一行注释掉或修改正确;exitexit退出进入人正常界面

配置好本地yum源后,我们需要清理一下yum源缓存,和列出能用的yum仓库中的包

 出现上述结果说明本地yum源配置成功(有7203个可用的包)

 5.关闭防火墙,清空规则(两个节点都需要执行)

systemctl stop firewalld && systemctl disable firewalld
# 关闭防火墙和移除防火墙
iptables -F
iptables -X
iptables -Z
iptables-save
# 清空规则
setenforce 0
# 临时关闭selinux模式 setenforce 0
getenforce
# 查看selinux的模式
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
# 永久关闭selinux规则

6.安装vsftpd服务,是为了能让compute节点通过ftp访问到controller节点上的镜像

 修改vsftpd服务的配置文件:

 在第一行添加anon_root=/opt

 重启服务,使修改的配置生效,并设置开机自启

systemctl restart vsftpd && systemctl enable vsftpd

7.配置compute节点的yum源

用scp命令将controller节点的yum源传到compute节点:

scp /etc/yum.repos.d/local.repo compute:/etc/yum.repos.d/

 Ctrl+Tab键切换到compute节点(标红的是需要修改的地方)

 这里就用到了/etc/hosts中配置将controller的IP地址替换成了node_name

修改完后,保存退出

执行清理yum源和列出可用的yum源命令:

yum clean all
yum repolist all

 这样compute节点就不用在配置本地yum源了

8.安装iaas-xiandian服务(在两节点执行)

yum -y install iaas-xiandian

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

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地址

#External Network Interface. example:eth1
INTERFACE_NAME=ens34 #第二块网卡作为外网,对外提供服务(云主机实例)的网卡名

#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
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.10

#Controller HOST Password. example:000000
HOST_PASS=000000

#Controller Server hostname. example:controller
HOST_NAME=controller

#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.100.20

#Compute HOST Password. example:000000
HOST_PASS_NODE=000000

#Compute Node hostname. example:compute
HOST_NAME_NODE=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

#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
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

需要修改的地方已在后面增加注释(有的地方还需输入六个零上面会有 example: 提示)

通过scp方法将修改过的xiandian配置文件传输到compute节点

scp /etc/xiandian/openrc.sh compute:/etc/xiandian/openrc.sh

在compute节点中将xiandian配置文件修改第69行的IP地址,改成对应节点的IP地址(在compute节点只需修改这一行)

修改完成后保存退出

10.跑iaas-pre-host.sh脚本(在两节点执行)

跑脚本之前要养成一个拍快照的好习惯,当跑错的时候,能够恢复跑之前的状态

出现这个后两个节点都需要Ctrl+D重启一下虚拟机

接下来开始跑部署OpenStack各个组件的脚本了(important) 

11.进入/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组件 ]

controller节点:

给1.sh增加可执行权限

chmod +x 1.sh

执行:

./1.sh

 compute节点:

 两边依次跑完后,去浏览器输入 controller节点IP地址/dashboard 访问OpenStack-国基北盛

 

 

最后openstack-国基北盛就搭建成功了。

欢迎点赞收藏哦!感谢支持~~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐