目录
4台centos 7.5服务器:
服务器 | 主机名 | IP | 配置 | 备注 |
openstack控制节点 | openstack | 192.168.2.10 | 2C 7G | 关闭selinux 卸载firewalld 卸载NetworkManager 设置network开机自启 |
nova计算节点 | nova1 | 192.168.2.20 | 2C 4G | 关闭selinux 卸载firewalld 卸载NetworkManager 设置network开机自启 |
nova计算节点 | nova2 | 192.168.2.30 | 2C 4G | 关闭selinux 卸载firewalld 卸载NetworkManager 设置network开机自启 |
内网源服务器 时间同步服务器 | http | 192.168.2.40 | 1C 1G | 关闭selinux 卸载firewalld |
(3台做主机名解析)
vim /etc/hosts
- 192.168.2.10 openstack
- 192.168.2.20 nova1
- 192.168.2.30 nova2
openstack安装时需要使用外部dns来解析域名,3台主机都如下配置:
vim /etc/resolv.conf
- #把无关项都去掉,search后面得域名后缀都删除,去掉search开头得所有行
- nameserver 114.114.114.114
注意:/etc/resolv.conf里search开头的配置一定要删除干净,不然在后面创建云主机访问控制台的时候会报错,会自动给nova节点配置文件/etc/nova/nova.conf的vncserver_proxyclient_address配置项的主机名后面多加一个.localdomain,会导致nova节点无法ping通该错误域名。
yum镜像下载地址:
链接:https://pan.baidu.com/s/1OtBp89aHrnF-tKLW9dscdg?pwd=1234
提取码:1234
其中:
此处选择http主机为yum源服务器,将RHEL7-extras.iso和RHEL7OSP-10.iso下载解压到openstack主机,并搭建http源,如果是内网机器,还要加一个系统源,本次实验是外网环境,就不单独搭建系统源了,如果内网环境请自行添加:
(建议将http源单独找一台服务器,实际部署有试过将http源部署在openstack服务器,在安装openstack的时候有报错,并且导致http无法访问的情况)
- #http主机执行
- yum install httpd -y
-
- mkdir -p /var/www/html/{extras,openstack}
将RHEL7-extras.iso内容挂载复制到/var/www/html/extras目录下
将RHEL7OSP-10.iso内容挂载复制到/var/www/html/openstack目录下
- chmod -R 755 /var/www/html/
-
- systemctl enable --now httpd
如上可以正常访问,下面开始配置yum源客户端:
三台主机均如下相同配置:
vim /etc/yum.repos.d/openstack.repo
内容如下,添加三个openstack安装源:
- [extras]
- name=CentOS-$releasever - Extras
- baseurl="http://192.168.2.40/extras"
- enabled=1
- gpgcheck=0
-
- [openstack]
- name=CentOS-$releasever - Openstack
- baseurl="http://192.168.2.40/openstack/rhel-7-server-openstack-10-rpms"
- enabled=1
- gpgcheck=0
-
- [openstack-devtools]
- name=CentOS-$releasever - Openstack-dev-tools
- baseurl="http://192.168.2.40/openstack/rhel-7-server-openstack-10-devtools-rpms"
- enabled=1
- gpgcheck=0
- yum clean all
-
- yum repolist
源搭建成功。
(时间同步服务器建议也是单独找一台服务器,实际部署有试过和openstack共享服务器,在安装openstack的时候有报错,是时间无法同步)
服务端:
同样将http主机(192.168.2.40)服务器作为时间服务器,其他主机向该机进行时间同步
- #在http服务器执行
- yum install chrony -y
-
- vim /etc/chrony.conf
- #新增如下内容
- bindacqaddress 0.0.0.0
- allow 192.168.2.0/24
- systemctl restart chronyd
- systemctl enable chronyd
客户端:
(openstack和nova主机均如下配置):
- #在openstack和nova主机配置
- yum install chrony -y
-
- vim /etc/chrony.conf
- #配置如下内容,将自带server配置都注释或删除,就用下面一个server地址
- server 192.168.2.40 iburst
- systemctl restart chronyd
-
- systemctl enable chronyd
检查时间同步状态:
- #在nova主机执行
- chronyc sources -v
在nova1和nova2主机安装Nova相关包:
qemu-kvm:主包
libvirt-daemon:libvirt守护进程
libvirt-daemon-driver-qemu:libvirt启动
libvirt-client:libvirt客户端
python-setuptools:python工具包
openstack启动虚机得过程如下:
user指令--->openstack--->nova--->libvirtd--->qemu-kvm,其中openstack和nova属于openstack项目,libvirtd和qemu-kvm属于单独得虚拟化平台,所以需要单独安装:
- yum install qemu-kvm libvirt-daemon libvirt-daemon-driver-qemu libvirt-client python-setuptools -y
-
- systemctl enable --now libvirtd
Openstack安装2个软件包
- python-setuptools
- openstack-packstack
- #在openstack主机安装
- yum install python-setuptools openstack-packstack -y
(在openstack主机操作):
- cd /root
-
- packstack --gen-answer-file=answer.ini
-
- ls
如上会生成一个应答文件。
修改应答文件:
vim /root/answer.ini
需要修改得内容如下:
- #42行:为是否安装swift组件,swift一般在做存储云才用到,这里可不装
- CONFIG_SWIFT_INSTALL=n
-
- #45、49、53行:计费相关
- CONFIG_CEILOMETER_INSTALL=n
- CONFIG_AODH_INSTALL=n
- CONFIG_GNOCCHI_INSTALL=n
-
- #75行:时间服务器地址,这里填写NTP时间服务器地址
- CONFIG_NTP_SERVERS=192.168.2.40
-
- #95行:默认就是本机IP,不做更改,这个是设置openstack Dashboard管理节点是在哪台机器
- CONFIG_CONTROLLER_HOST=192.168.2.10
-
- #98行:nova组件安装IP地址,这里需要给几个nova主机安装nova组件,就填几个IP,这里应该将nova1和nova2的IP都写上,但是后面nova2要做其他实验,这里就安装nova1一个
- CONFIG_COMPUTE_HOSTS=192.168.2.20
-
- #102行:在哪个主机安装配置Neutron网络,这里所有主机包含openstack和nova主机都要安装,同样nova2先不装,装openstack和nova1主机
- CONFIG_NETWORK_HOSTS=192.168.2.10,192.168.2.20
-
- #330行:用户名,管理员用户名是admin,也可自定义修改
- CONFIG_KEYSTONE_ADMIN_USERNAME=admin
-
- #333行:管理员密码,密码默认是随机数,也可自定义修改
- CONFIG_KEYSTONE_ADMIN_PW=admin
-
- #840行:支持的网络协议,如果要连互联网,就要支持运营商的flat直连网络
- CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan
-
- #910行:ovs网桥名称
- CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
-
- #921行:网桥物理网卡接口,br-ex转发给真实物理网卡ens38,真实物理网卡名需要根据本机实际物理网卡名对于修改
- CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens38
-
- #1179行:是否需要演示案例,这里设置不,可以减少内存
- CONFIG_PROVISION_DEMO=n
修改好应答文件好,可以使用packstack根据应答文件配置安装openstack和nova,nova节点会被远程安装(通过ssh):
packstack --answer-file=/root/answer.ini
执行上面安装后,如果各主机之间没有配置互信,会要求输入各个nova节点主机的密码,按提示输入密码后回车即可,安装过程耗时比较长,需要耐心等待安装。
如下图所示,如果遇到报错,需要按照提示对于修改,然后再重新执行安装,下图是报ntp时间同步报错,和一个NetworkManager启动,而networking没有启用的警告:
修正错误后,重新安装:
如上,安装成功,至此一个openstack的私有云就安装完成。
安装完成后openstack服务会多一个br-ex网络,br-ex和原物理网口模板类型如下:
如上可以看到eth0物理网卡的设备类型变成ovs,TYPE是ovs的一个端口ovsport,属于下面的br-ex交换机,上面的br-ex图,看到br-ex设备类型是OVS,类型是OVSBridge。
使用ovs-vsctl命令查看:
ovs-vsctl show
可以看到r-ex相当于一个虚拟交换机,而物理网卡ens38是br-ex的一个端口,用户虚机内部网络的向外转发。同样,在nova节点也是相同配置。
前面介绍过,openstack服务的Web控制面板是属于Horizon服务,Horizon是一个用于管理、控制OpenStack服务的Web控制面板,也称之为Dashboard仪表盘,可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。
登录前,本次部署使用的openstack版本需要修改一个httpd服务配置:
vim /etc/httpd/conf.d/15-horizon_vhost.conf
新增一行配置:
WSGIProcessGroup %{GLOBAL}
systemctl reload httpd
登录网址:http://192.168.2.10/dashboard
输入安装时answer.ini应答文件里配置的用户名密码,admin/admin登录:
在answer.ini同目录下的keystonerc_admin也记录了web管理端的用户名和密码:
cat /root/keystonerc_admin
也可以通过该文件,通过命令console登录到openstack后台:
source /root/keystonerc_admin