涨了一个大教训,以后如果有官方准备的安装说明文档就再也不看网上的安装教程了。很多步骤的细节都不说明白,导致一直报错,作者也不提醒。
基础环境-主机准备
OpenStack云平台搭建需要两个节点,一个是controller(控制节点),另一个是compute(计算节点)。
名称
IP地址
主机名称
备注
控制节点
192.168.146.150
controller
最小4G,开启虚拟化
计算节点
192.168.146.200
compute1
最小2G,开启虚拟化
controller(控制节点)
主机安装
我没有截图标注的部分直接下一步。
此设置是为了修改网卡命名规则为eth规则
之后按上下箭头选中Install CentOS 7,不要按回车,随后按下tab键。
按下空格,输入如下指令后,按回车键。
1 net.ifnames=0 biosdevname=0
之后进入图形化安装界面:
如果输入的密码比较短的话,这里要点击两次完成:
等待下面这个进度条结束之后点击重启
重启之后使用root登录
修改主机名
1 2 3 hostnamectl set-hostname controller bash hostname
修改第一块网卡
首先打开虚拟机的虚拟网络编辑器,记住子网掩码和网关。
再查看一下IP范围
修改主机ip地址
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
在IP地址和子网掩码部分,子网掩码就是虚拟机net模式的子网掩码,IP地址就是在IP范围内的随意数即可。
保存退出后,重启网卡,使网卡生效。
1 systemctl restart network
发现报错,查看一下报错信息
这个报错的原因是配置文件中MAC与当前网卡MAC不一致,只需要修改一下配置文件即可。
通过ip a命令查看mac地址是00:0c:29:bc:d2:97
然后在配置文件中加入这一行(如果存在的话只修改就可以)
1 HWADDR=00:0c:29:bc:d2:97
这时候再重启就没问题了
修改第二块网卡
同样,查看主机模式的IP掩码和IP范围,主机模式可以不用设置网关。
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
这里的IP地址要跟主机模式在同一个网段。
别忘记设置网卡MAC地址HWADDR=00:0c:29:bc:d2:a1。
重启网络服务。
1 systemctl restart network
创建ssh连接
开启sshd服务并更改默认配置文件。
1 2 systemctl enable sshd vi /etc/ssh/sshd_config
可能需要更改的地方:
1 2 3 Port=22 设置SSH的端口号是22(默认端口号为22) PermitRootLogin yes 设置为yes是允许root用户登陆 ClientAliveInterval 60 服务器发送保持活动消息的时间间隔,不希望ssh无操作断连太快就改大一点,比如改成60
如果找不到这些配置的话,vi有个查找快捷键,进入管理模式,使用/进行查找,然后回车就行。
重启sshd服务,使配置生效。
开启防火墙端口
1 firewall-cmd --zone=public --add-port=22/tcp --permanent
这样就能使用连接ssh了。
如果你的ssh连接也报WARNING!The remote SSH server rejected X11 forwarding request.这个错误,那可能是因为没有下载xorg-x11-xauth 的rpm包。在完成1.3yum换源之后,可以下载该包解决此问题。
1 yum -y install xorg-x11-xauth
设置hosts文件
添加如下内容:
1 192.168.146.200 compute1
compute计算节点
compute节点与controller节点基础环境及安装系统大致相同,可参考controller节点配置,以下是稍有不同的地方。
修改主机名
1 2 3 hostnamectl set-hostname controller bash hostname
修改网卡
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
第二块网卡
1 vi /etc/sysconfig/network-scripts/ifcfg-eth1
重启网卡
1 systemctl restart network
创建ssh连接
1 2 3 4 5 6 vi /etc/ssh/sshd_config service sshd restart firewall-cmd --zone=public --add-port=22/tcp --permanent
这样就能使用工具连接ssh了。
设置hosts文件
添加如下内容:
1 192.168.146.150 controller
yum换源
删除系统自带yum所有源配置文件
1 rm -f /etc/yum.repos.d/*
获取阿里源的配置文件
1 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
文件内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever /os/$basearch / http://mirrors.aliyuncs.com/centos/$releasever /os/$basearch / http://mirrors.cloud.aliyuncs.com/centos/$releasever /os/$basearch / gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$releasever - Updates - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever /updates/$basearch / http://mirrors.aliyuncs.com/centos/$releasever /updates/$basearch / http://mirrors.cloud.aliyuncs.com/centos/$releasever /updates/$basearch / gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [extras] name=CentOS-$releasever - Extras - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever /extras/$basearch / http://mirrors.aliyuncs.com/centos/$releasever /extras/$basearch / http://mirrors.cloud.aliyuncs.com/centos/$releasever /extras/$basearch / gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [centosplus] name=CentOS-$releasever - Plus - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever /centosplus/$basearch / http://mirrors.aliyuncs.com/centos/$releasever /centosplus/$basearch / http://mirrors.cloud.aliyuncs.com/centos/$releasever /centosplus/$basearch / gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [contrib] name=CentOS-$releasever - Contrib - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever /contrib/$basearch / http://mirrors.aliyuncs.com/centos/$releasever /contrib/$basearch / http://mirrors.cloud.aliyuncs.com/centos/$releasever /contrib/$basearch / gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
清理yum缓存,并生成新的缓存
1 2 yum clean all yum makecache
更新yum源检查是否生效
时间同步
控制节点
下载安装chrony
修改配置文件/etc/chrony.conf
添加server NTP_SERVER iburst,将NTP_SERVERNTP_SERVER替换成time1.aliyun.com
1 2 3 server time1.aliyun.com iburst allow 192.168.146.0/24
保存并退出后,输入如下命令:
1 2 3 systemctl enable chronyd.service systemctl start chronyd.service
计算节点
下载安装chrony
修改配置文件/etc/chrony.conf
编辑/etc/chrony.conf 文件并注释除server 值外的所有内容
1 server controller iburst
保存并退出后输入如下命令:
1 2 3 systemctl enable chronyd.service systemctl start chronyd.service
验证操作
输入命令
控制节点将显示
计算节点将显示
安装通用软件包
计算节点和控制节点都要进行如下操作。
先禁用防火墙和selinux(永久禁用)。
1 2 3 4 5 systemctl stop firewalld systemctl disable firewalld setenforce 0 getenforce vi /etc/selinux/config
编辑配置文件如下所示:
OpenStack包
在CentOS中, extras仓库提供用于启用 OpenStack 仓库的RPM包。
1 2 3 4 5 6 7 8 9 10 yum install -y https://buildlogs.centos.org/centos/7/cloud/x86_64/openstack-liberty/centos-release-openstack-liberty-1-3.el7.noarch.rpm yum install -y centos-release-openstack-liberty yum -y upgrade yum install -y python-openstackclient yum install -y openstack-selinux
安装rabbitmq消息队列
安装包:
1 yum install -y rabbitmq-server
启动消息队列服务并将其配置为随系统启动:
1 2 systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service
验证端口是否存在
添加 openstack 用户:
1 rabbitmqctl add_user openstack RABBIT_PASS
用合适的密码替换 RABBIT_DBPASS。
给openstack用户配置写和读权限:
1 rabbitmqctl set_permissions openstack ".*" ".*" ".*"
安装监控插件
1 rabbitmq-plugins enable rabbitmq_management
检查端口查看是否开启
1 netstat -tnulp|grep 15672
开启之后可以访问rabbitmq web管理界面http://192.168.146.150:15672 .
默认用户名:guest 默认密码:guest
安装memcached缓存token
下载安装软件包
1 yum install -y memcached python-memcached
1 2 3 4 5 sed -i 's#127.0.0.1#0.0.0.0#g' /etc/sysconfig/memcached systemctl enable memcached.service systemctl start memcached.service
SQL数据库
控制节点安装软件包
1 yum install -y mariadb mariadb-server MySQL-python
创建并编辑 /etc/mysql/conf.d/mariadb_openstack.cnf,然后在 [mysqld] 部分,设置 bind-address值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:
1 2 3 4 5 6 7 8 [mysqld] bind-address = 192.168.146.200 default-storage-engine = innodb innodb_file_per_table = on collation-server = utf8_general_ci max_connections = 4096 init-connect = 'SET NAMES utf8' character-set-server = utf8
启动数据库服务,并将其配置为开机自启:
1 2 3 4 systemctl enable mariadb.service systemctl start mariadb.service netstat -tnulp|grep 3306
执行脚本来对数据库进行安全加固。
1 2 3 mysql_secure_installation
安装和配置OpenStack身份认证服务
该部分控制节点配置即可。
前提条件
在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。
完成下面的步骤以创建数据库:
生成一个随机值在初始的配置中作为管理员的令牌。
安装并配置组件
运行以下命令来安装包。
1 2 yum install -y openstack-keystone httpd mod_wsgi \ memcached python-memcached
启动Memcached服务,并且配置它随机启动。
1 2 systemctl enable memcached.service systemctl start memcached.service
编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
在[DEFAULT]部分,定义管理员token初始值:
1 2 3 [DEFAULT] ... admin_token = ADMIN_TOKEN
用你在前一步生成的随机数替换 ADMIN_TOKEN 。
在 [database] 部分,配置数据库访问:
1 2 3 [database] ... connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone
将 KEYSTONE_DBPASS 替换为你为数据库选择的密码。
在[memcache] 部分,配置Memcached服务:
1 2 3 [memcache] ... servers = localhost:11211
在[token] 部分,配置 UUID token provider 和Memcached 驱动:
1 2 3 4 [token] ... provider = uuid driver = memcache
在 [revoke] 部分,配置SQL 回滚驱动:
1 2 3 [revoke] ... driver = sql
(可选的)为帮助排错,在 “[DEFAULT]”部分启用详细日志。
1 2 3 [DEFAULT] ... verbose = True
初始化身份认证服务的数据库:
1 su -s /bin/sh -c "keystone-manage db_sync" keystone