搭建openstack平台所需要的两个镜像包:CentOS-7-X86_64-DVD-1804.iso 和 chinaskill_cloud_iaas.iso镜像文件。
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节点的配置)
#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地址了
#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/
#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
#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
#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
#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 #查看
# 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 #修改完成后保存退出
基础配置操作命令已经编写成shell脚本,通过脚本进行一键安装。如下:
Controller&&Compute
[root@controller ~]iaas-pre-host.sh
#安装完成后两个节点都需要Ctrl+D同时重启一下虚拟机
#或
[root@controller ~]reboot
错误:软件包: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
进入/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
两边都跑完后,去浏览器输入 192.168.100.10/dashboard 访问OpenStack
恭喜完成搭建!!!(一个萌新的攻略,有不对的地方还大神指教)
完成后可以关注我~~~去看我的另一篇 T版搭建 非常详细
这是我写的第一篇所以排版不是很好,多多关照