搭建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段的。这里可以根据自己的需要去进行配置。
二、开始配置虚拟机的网卡:
- 利用vi文本编辑器去配置虚拟机的虚拟网卡;
vi /etc/sysconfig/network-scripts/ifcfg-#需要配置的网卡名
- 配置好后重启网络服务,使配置生效;
systemctl restart network #第一种重启网络的方法 service network restart #第二种重启网络的方法
- 配置好后ping自己配置好的IP地址;
ping #IP地址
- 最后,配置网卡的最终目的就是利用远程工具(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地址后的配置:
本人在重启网卡时遇到的问题:
也可以直接将NetworkManager,disable掉
五、连接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源)
创建两个需要被挂载的本地路劲centos和iaas(这里创建的目录名称需要和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 /sysroot;chroot /sysroot; 进入linux命令行界面,vi /etc/fstab 将自己写的那一行注释掉或修改正确;exit;exit;退出进入人正常界面
配置好本地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-国基北盛就搭建成功了。
欢迎点赞收藏哦!感谢支持~~