centos7+openstack (1) 环境安装

Submitted by Lizhe on Mon, 07/10/2017 - 16:48

 

首先我要说的是, openstack 比我想的要简单一点(一开始我觉得它有点太臃肿了), 但学习曲线仍然很陡峭

( 学习曲线陡峭这句话是我 7 年前从一本java SOA的书里看到的,它当时在讲基于soap的webservice应用, 原话大概是说 在任何系统上构建分布式系统都不是一件容易的事,webservice学习曲线很陡峭 )

如果你不能自称是一名"专家", 或者接触Linux服务器的时间不长,或者对开源项目不是很熟悉, 或者对分布式系统不了解 再或者是没用过虚拟机之类的

openstack可以分分钟玩死你... 所以最好是... 好好学基础

它依赖的开源库和软件并不多,除了自身的安装包大约只有 memcached, mariadb 和 rabbitmq, 如果以上3样东西你不知道是什么, 最好在开始之前去了解一下

这里我尽量遵循官方文档的做法, 以避免出现太多不知道为什么就出现了也许只是某个东西版本更新了导致的log里什么都看不出来Google被墙了baidu根本查不到的错误

首先我是在vmware虚拟机上装了两台centos7, 安装的时候注意点, 直接选workspace带桌面UI那个, 要不你就得参考我的另一篇文章自己动手装UI界面了

两台机器的hosts里都配置上dns

192.168.1.151 centos_admin ( 用于管理的服务器 )
192.168.1.152 centos_compute_1 ( 作为计算节点存在 )

理论上你可以把这两台机器都装在一台机器上, 既做管理节点又做计算节点, 我们还是分开吧, 毕竟分布式才是精髓所在

因为需要固定ip, 如果你也像我一样使用虚拟机操作 ( 土豪请购买两台电脑 ), vmware的话你需要桥接网络, 然后设置固定ip

两台虚拟机都配置成了4核+8G内存, 所以你最好使用台式电脑

一开始我在fedora23上操作, 发现依赖库实在太难找了, 所以还是推荐你跟我一样使用centos7 , 当然官方文档是使用Ubuntu的, 不过我更熟悉Redhat系列

192.168.1.151 centos_admin:

yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

yum install -y centos-release-openstack-liberty 
yum install -y python-openstackclient

##MySQL 
yum install -y mariadb mariadb-server MySQL-python

##RabbitMQ 
yum install -y rabbitmq-server

##Keystone 
yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached

##Glance 
yum install -y openstack-glance python-glance python-glanceclient

##Nova 
yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient

##Neutron linux-node1.example.com 
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset

##Dashboard 
yum install -y openstack-dashboard

##Cinder 
yum install -y openstack-cinder python-cinderclient

 

 

192.168.1.152 centos_compute_1:


yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

yum install -y centos-release-openstack-liberty

yum install -y python-openstackclient

##Nova 
yum install -y openstack-nova-compute sysfsutils

##Nova 
yum install -y openstack-nova-compute sysfsutils

##Neutron 
yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables ipset

##Cinder 
yum install -y openstack-cinder python-cinderclient targetcli python-oslo-policy

 

安装过程都很很简单, 分别把两台server按照上面的yum安装完成

 

配置mysql ( 注意这里是mariadb)

/etc/my.cnf

[mysqld] 
default-storage-engine = innodb 
innodb_file_per_table 
collation-server = utf8_general_ci 
init-connect = 'SET NAMES utf8' 
character-set-server = utf8 

 

配置mysql开机启动
systemctl enable mariadb.service

初始化mysql
mysql_install_db --datadir="/var/lib/mysql" --user="mysql"

启动mysql
systemctl start mariadb.service

设置密码
mysql_secure_installation

旧密码是空的,直接回车,然后输入两遍新密码, 剩下的全Y

139

140

数据库设置完成以后配置一下相关的实例和表

mysql -p123456 (123456是刚才设置的密码)

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';

CREATE DATABASE nova; 
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';

CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';

CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

flush privileges;
show databases;

141

默认的最大连接数是150, 改大一点,要不后边会报连接数不够用的错误

修改最大连接数
show variables like 'max_connections';
set global max_connections=1000;

 

然后在这里顺手把keystone的数据库脚本刷上, keystone是一个目录服务和权限控制组件, 所有的openstack服务都要在其上注册,所以我们得先做这个,具体内容后面再表

如果你跟我一样用root用户的话 ( root用户万岁) 就不用加 su -s 了直接

/bin/sh -c "keystone-manage db_sync" keystone

如果是Ubuntu用户默认不用root

su -s /bin/sh -c "keystone-manage db_sync" keystone

 

配置完数据库我们来配置rabbitmq

设置开机启动rabbitmq 然后启动它

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

 

添加一个用户openstack, 最后一个参数是密码也是openstack

rabbitmqctl add_user openstack openstack

设置权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

把管理界面的UI插件打开

rabbitmq-plugins enable rabbitmq_management

143

重启一下让配置生效

systemctl restart rabbitmq-server.service

访问 http://192.168.1.151:15672 应该可以看到管理界面了 ( 你需要用户名跟密码 ? guest/guest )

144

稍微设置一下openstack用户,加个权限和vhost

rabbitmqctl set_user_tags openstack administrator
rabbitmqctl set_permissions -p / openstack '.*' '.*' '.*'

145

146