本文硬件环境描述
硬盘 | Controller:500G SAS Compute:500G SAS |
内存 | Controller:16G Compute:16G |
CPU | Controller:4Vcpus Compute:8Vcpus |
底层环境 | ESXI:6.5 |
CPU加速支持 | 在ESXI上设置主机的CPU勾选上即可 |
本文软件环境描述
系统版本 | Centos7系列 |
分区 | /boot:500M swap:8G /:其余所有 |
Openstack版本 | Stein版 |
角色 | Controller:控制节Compute:计算节点 |
Controller 管理IP | 10.0.10.188 |
Compute 管理IP | 10.0.10.189 |
给云主机上网的IP | 10.10.20.0/24 |
网卡 | ens192:配置管理IP ens224:不配置IP |
其它 | 关闭所有节点的firewalld跟selinux |
补充:此文章Openstack因为是测试所以是建立在ESXI的虚拟机上,相当于是虚拟化嵌套,另外硬件环境controller节点最低不要低于4G,compute节点最低不能低于8G,否则openstack搭建完毕在上面创建云主机是起不来的,CPU可以看着给,但请不要低于两核
补充2:因为openstack中涉及的服务组件很多,本文采用统一密码redhat,如果在真实环境中,也请最好密码一致,加强复杂性即可
一.基础准备阶段
1. vi /etc/sysconfig/network-scripts/ifcfg-ens192 修改controller节点的ens192网卡,配置管理IP
1.2. vi /etc/sysconfig/network-scripts/ifcfg-ens224 修改controller节点的ens224网卡,此网卡用于云主机上网,所以不用配置IP但是要更改以下内容
1.2.1.systemctl restart network 重启controller节点的网卡服务
1.2.2.systemctl stop firewalld 关闭controller节点的防火墙
1.2.3.systemctl disable firewalld 设置防火墙为开机不启动
1.2.4. sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config 永久关闭controller节点的selinux服务,需要重启后生效,现在暂时不重启等改完主机名一起重启
1.3.配置compute节点的ens192网卡的管理IP地址
1.3.1.配置compute节点的ens224网卡,同样此网卡也是用于云主机上网不需要配置IP
1.3.2.systemctl restart network 重启compute节点的网卡服务
1.3.3.systemctl stop firewalld 关闭compute节点的防火墙
1.3.4.systemctl disable firewalld 设置防火墙为开机不启动
1.3.5. sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config 永久性关闭compute节点的selinux 需重启后生效,可以等后续改完主机名一起重启
2.yum -y install vim wget 安装vim编辑工具以及wget下载工具,在controller与compute节点上都执行下安装
2.1. vim /etc/hosts 编辑controller节点的/etc/hosts文件添加如下行
如图,188是控制节点的IP,189是计算节点的IP,hosts文件相当于是一个小DNS服务器
2.2.vim /etc/hosts 编辑compute节点的/etc/hosts文件同样添加以下两行
2.1.测试
在controller节点ping compute
在compute节点pingcontroller
3. vim /etc/hostname 编辑controller节点的计算机名,修改成如下
3.1.vim /etc/hostname 编辑compute节点的计算机名,修改成如下,然后重启下服务器
注意:计算机名需要重启才能生效
4. yum list | grep openstack 查看下系统里有哪些openstack的版本源可以安装
我们看到总共有四个版本,我们安装stein版 (最新版本可能有BUG等等)
4.1. yum -y install centos-release-openstack-stein.noarch 在controller节点上安装stein版本的源
4.2. yum -y install centos-release-openstack-stein.noarch 在compute节点上也安装stein版本的源
4.3. yum -y upgrade 在controller节点执行upgrade更新下系统内核以及软件
4.4. yum -y upgrade 在compute节点也执行upgrade更新系统内核以及软件
更新是一个比较漫长的等待过程
5.以下操作在controller节点上运行
5.1 yum -y install python-openstackclient 在controller节点安装openstack的包
5.2. yum -y install openstack-utils 安装openstack辅助工具包
5.3. yum -y install openstack-selinux 安装openstack-selinux,他可以用来帮你解决selinux的关系
5.4. yum -y install chrony 在控制节点上安装NTP时间服务器
5.4.1.systemctl enable chronyd.service 设置NTP服务为开机自启动
5.4.2.systemctl start chronyd.service 开启NTP服务
5.5.openssl rand -hex 10 > key.sh 此命令的意思是将openssl rand -hex 10输出的结果导入到key.sh这个文件里,如果没有这个文件,会在当前目录自动生成这个文件,并且文件里会有秘钥,这个秘钥作为后面认证的时候需要用
6.以下操作在compute节点上运行
6.1. yum -y install python-openstackclient 在compute节点安装openstack的包
6.2. yum -y install openstack-utils 安装openstack辅助工具包
6.3. yum -y install openstack-selinux 安装openstack-selinux的包
6.4. yum -y install chrony 在compute节点安装NTP服务
6.5. systemctl enable chronyd.service 设置NTP服务为开机自启动
6.6.systemctl start chronyd.service 开启NTP服务
7.以下操作在controller节点上:
7.1. yum -y install mariadb mariadb-server python2-PyMySQL 在controller节点上安装mariadb数据库
7.2. vim /etc/my.cnf.d/openstack.cnf 编辑此配置文件,通常是没有openstack.cnf这个文件的,我们可以直接用vim创建它
7.3.填写上如下内容之后保存并退出
7.4. systemctl enable mariadb 设置mariadb数据库为开机自启动
7.5. systemctl start mariadb 开启mariadb数据库
7.6. mysqladmin -u root password 'redhat' 给mariadb数据库设置root密码这里密码为redhat (如果真实环境请写复杂密码!)
二.安装服务阶段
安装rabbitmq:
1.以下操作在controller节点上操作
1.1.yum -y install rabbitmq-server 安装rabbitmq服务,这是一个消息队列服务
1.2. systemctl start rabbitmq-server 开启rabbitmq
1.3. systemctl enable rabbitmq-server 设置为开机自启动
1.4. rabbitmqctl add_user openstack redhat 创建了一个名为openstack的用户,密码为redhat
1.5. rabbitmqctl set_permissions openstack ".*" ".*" ".*" 给openstack用户赋予权限
1.6. rabbitmq-plugins enable rabbitmq_management 启动rabbitmq插件
1.7.打开浏览器输入IP地址跟端口号,初始用户是guest 密码也是guest
1.8.能进入说明rabbitmq搭建没问题
安装Memcached
1.以下操作在controller节点上
1.1. yum -y install memcached python-memcached 安装memcached服务,这是一个高速缓存服务
1.2. vim /etc/sysconfig/memcached 编辑memcached的配置文件
1.3.修改成如下一样即可
1.4.systemctl start memcached.service 开启memcached服务
1.4. systemctl enable memcached.service 设置为开机自启动
安装Etcd
1.以下操作在controller节点
1.1. yum -y install etcd 安装etcd服务,这是一个分布式的键值对数据存储系统
1.2.vim /etc/etcd/etcd.conf 编辑etcd的配置文件
1.3.修改以下八项,根据实际情况改,IP换成你controller节点的管理IP,有被#注释的去掉就行
ETCD_LISTEN_PEER_URLS="http://10.0.10.188:2380"
ETCD_LISTEN_CLIENT_URLS=http://10.0.10.188:2379
ETCD_NAME="controller"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.10.188:2380"
ETCD_ADVERTISE_CLIENT_URLS=http://10.0.10.188:2379
ETCD_INITIAL_CLUSTER="controller=http://10.0.10.188:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
1.4. systemctl enable etcd 设置etcd为开机自启动
1.5.systemctl start etcd 开启etcd服务
安装Keystone服务
1.以下操作在controller节点上操作
1.1. mysql -u root –p 进入数据库,数据库密码是前面设置的redhat
1.2. create database keystone; 创建一个名为keystone的数据库
1.3.grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'redhat'; 给keystone数据库创建一个用户并且设置密码为redhat
1.4. grant all privileges on keystone.* to 'keystone'@'%' identified by 'redhat'; 允许所有人远程访问keystone数据库
1.5. yum -y install openstack-keystone httpd mod_wsgi 安装keystone以及http服务,keystone是一个身份验证的服务
1.6. vim /etc/keystone/keystone.conf 编辑keystone的配置文件
1.7.在配置文件里找到[database] 在下面添加一行
connection = mysql+pymysql://keystone:redhat@controller/keystone
查找方式举例:直接在底行模式输入/\后面跟你要找的内容就可以找到了,其它的以此类推
举例如下图:红框内的redhat是你keystone数据库的密码
1.7.1.在配置文件里找到[tokent]在下面添加一行
provider = fernet
举例如下图:
1.8. su -s /bin/sh -c "keystone-manage db_sync" keystone 填充Keystone数据库
1.9. 初始化Keystone数据库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
1.10. 启动Keystone身份服务,红框中redhat是数据库的密码,注意不要填错
keystone-manage bootstrap --bootstrap-password redhat --bootstrap-admin-url http://controller:5000/v3/ --bootstrap-internal-url http://controller:5000/v3/ --bootstrap-public-url http://controller:5000/v3/ --bootstrap-region-id RegionOne
1.11. vim /etc/httpd/conf/httpd.conf 编辑http配置文件
1.12.找到ServerName这行,修改成如下,前面有#号的去掉#号
1.13. ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 做个软链接
1.14. systemctl enable httpd 将http设置为开机自启动
1.15. systemctl start httpd 开启http服务
1.16.设置临时全局变量,注意,密码是redhat不要写错,根据你实际的密码写
export OS_USERNAME=admin
export OS_PASSWORD=redhat
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
1.17.创建一个名为servicet的openstack服务项目
openstack project create --domain default --description "Service Project" service
1.17.1.如下图创建成功
1.18.创建一个名为myproject的openstack服务项目
openstack project create --domain default --description "Demo Project" myproject
1.18.1.如下图创建成功
1.19.创建一个名为demo的用户,并设置密码,我这里密码设置的是redhat
openstack user create --domain default --password-prompt demo
1.19.1.创建成功
1.20.创建一个名叫user的角色
openstack role create user
1.20.1.创建成功
1.21.将名为user的角色添加到myproject项目和demo用户,项目,角色,用户都是在上面创建的注意不要写错了
penstack role add --project myproject --user demo user
1.22. unset OS_AUTH_URL OS_PASSWORD 取消临时环境变量
1.23.以管理员身份请求令牌,这个密码是redhat
penstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
1.23.1.出现下图说明成功
1.24.用上面创建的demo用户去请求令牌,密码也是redhat
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name myproject --os-username demo token issue
1.24.1.出现此图说明请求令牌成功
1.25. vim admin.sh在宿主目录创建一个名为admin.sh的文件,用来存放admin的环境变量
1.25.1.写上如下内容,注意admin的密码别写错了
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=redhat
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
1.26.vim demo.sh 同样还需要创建一个demo.sh的文件,用来存放上面创建的demo用户的环境变量
1.26.1.写上如下内容:注意项目的名称以及用户名和密码
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=demo
export OS_PASSWORD=redhat
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
1.27. source admin.sh 加载admin的环境变量
1.27.1. openstack token issue 测试admin获取令牌,出现下图说明成功
1.28.source demo.sh 加载demo用户的环境变量
1.28.1. openstack token issue 测试demo用户获取令牌,出现下图说明成功
至此Keystone安装配置完毕
安装配置glance镜像服务
1.以下操作在controller节点上
1.1. mysql -u root -p 进入mariadb数据库
1.2. create database glance; 创建名为glance的数据库
1.3. grant all privileges on glance.* to 'glance'@'localhost' identified by 'redhat'; 创建一个名为glance的用户,并设置密码为redhat
1.4. grant all privileges on glance.* to 'glance'@'%' identified by 'redhat'; 设置允许所有人远程glance数据库
2. source admin.sh 加载下admin的环境变量
2.1. openstack user create --domain default --password-prompt glance 创建一个名为glance的用户,这里我的glance用户的密码设置的是redhat
2.2. openstack role add --project service --user glance admin 添加角色
2.3.openstack service create --name glance --description "OpenStack Image" image 创建glance服务
2.4. 创建glance服务API端点
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
3. yum install openstack-glance 安装glance镜像服务
3.1. vim /etc/glance/glance-api.conf 编辑glance-api的配置文件
3.2.找到[database]在下面添加如下内容,注意文中的redhat是glance数据库的密码,请根据实际情况来写
connection = mysql+pymysql://glance:redhat@controller/glance
3.3.找到[keystone_authtoken]添加如下内容:
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = redhat
3.4.找到[paste_deploy] 添加如下行
flavor = keystone
3.5.找到[glance_store] 添加如下内容
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
4. vim /etc/glance/glance-registry.conf 编辑glance-registry的配置文件
4.1.找到[database]添加如下内容
connection = mysql+pymysql://glance:redhat@controller/glance
4.2.找到[keystone_authtoken]添加以下内容
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = redhat
4.3.找到[paste_deploy]添加以下内容
flavor = keystone
5. su -s /bin/sh -c "glance-manage db_sync" glance 填充glance数据库
5.1.最后看到这个结果说明成功
5.2. 设置glance服务为开机自启动
systemctl enable openstack-glance-api.service openstack-glance-registry.service
5.3.开启glance服务
systemctl start openstack-glance-api.service openstack-glance-registry.service
5.4. wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img 下载一个微量级的镜像用来测试下镜像服务上传功能是否正常,如果在服务器里下载慢可以用浏览器下载之后再上传到服务器上
5.5.用如下命令上传镜像,cirros是你上传到openstack上显示的名字
cirros-0.4.0-x86_64-disk.img是镜像的名字,--public代表是公共的镜像
openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare –public
如图出现此情形说明glance上传镜像没有问题
5.6. openstack image list 查看openstack上的image
至此 glance组件搭建完毕
安装以及配置Placement服务
1.以下操作在controller节点上
1.1. mysql -u root -p 进入mariadb数据库
1.2. create database placement; 创建名为placement的数据库
1.3. grant all privileges on placement.* to 'placement'@'localhost' identified by 'redhat'; 创建一个名为placement的用户密码为redhat
1.4. grant all privileges on placement.* to 'placement'@'%' identified by 'redhat';
设置允许所有人远程placement数据库
1.5. source admin.sh 加载下admin的环境变量
1.6. openstack user create --domain default --password-prompt placement 创建一个名为placement的用户,我这里设置的密码为redhat
1.7. openstack role add --project service --user placement admin 添加角色
1.8. 在服务中添加API条目
openstack service create --name placement --description "Placement API" placement
1.9. 创建API服务端点
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
1.10. yum -y install openstack-placement-api 安装placement服务,这是一个资源管理服务
1.11. vim /etc/placement/placement.conf 编辑placement配置文件
1.12.找到[placement_database]添加以下内容
connection = mysql+pymysql://placement:redhat@controller/placement
redhat是placement数据库的密码
1.13.找到[api]添加以下内容
auth_strategy = keystone
1.14.找到[keystone_authtoken]添加如下内容:
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = redhat
1.15. su -s /bin/sh -c "placement-manage db sync" placement 填充placement数据库
1.16. systemctl restart httpd 重启httpd服务
至此Placement组件配置安装完毕
安装以及配置nova服务
1.以下在controller节点上操作
1.1. mysql -u root –p 进入mariadb数据库
1.2.分别创建三个名为nova_api、nova、cell0的数据库
create database nova_api;
create database nova;
create database nova_cell0;
1.3.分别给这三个数据库创建用户,设置密码以及设置允许远程登录
grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'redhat';
grant all privileges on nova_api.* to 'nova'@'%' identified by 'redhat';
grant all privileges on nova.* to 'nova'@'localhost' identified by 'redhat';
grant all privileges on nova.* to 'nova'@'%' identified by 'redhat';
grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by 'redhat';
grant all privileges on nova_cell0.* to 'nova'@'%' identified by 'redhat';
1.4. source admin.sh 加载下admin的环境变量
1.5. openstack user create --domain default --password-prompt nova 创建一个名为nova的用户我这里密码设置的是redhat
1.6. openstack role add --project service --user nova admin 添加角色
1.7. openstack service create --name nova --description "OpenStack Compute" compute 创建Nova服务
1.8.创建API端点
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
1.9. yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler 安装nova服务,nova是openstack里面的计算服务
1.10. vim /etc/nova/nova.conf 编辑nova配置文件
1.11.找到[DEFAULT]添加如下内容,redhat是rabbit的密码,一开始我们已经创建了,是redhat,my_ip填写controller节点的管理IP
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:redhat@controller
my_ip = 10.0.10.188
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
1.12. 找到[api_database]添加如下内容,redhat是nova_api数据库的密码,别写错
connection = mysql+pymysql://nova:redhat@controller/nova_api
1.13. 找到[database]添加如下内容,redhat是nova数据库的密码
connection = mysql+pymysql://nova:redhat@controller/nova
1.14.找到[api]添加如下内容
auth_strategy = keystone
1.15.找到[keystone_authtoken]添加如下内容
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = redhat
1.16.找到[vnc]添加如下内容
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
1.17.找到[glance]添加如下内容
api_servers = http://controller:9292
1.18.找到[oslo_concurrency]添加如下内容
lock_path = /var/lib/nova/tmp
1.19.找到[placement]添加如下内容
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = redhat
1.20.对数据库进行以下操作
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
1.21.开启nova服务
systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
1.22.将nova服务设置为开机自启动
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
安装compute节点的nova服务
1.以下操作在compute节点上
1.1.yum -y install openstack-nova-compute 在计算节点上安装计算服务
1.2. vim /etc/nova/nova.conf 编辑nova配置文件
1.3.找到[DEFAULT]添加以下内容
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:redhat@controller
my_ip = 10.0.10.189
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
1.4.找到[api]添加以下内容
auth_strategy = keystone
1.5.找到[keystone_authtoken]添加如下内容
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = redhat
1.6.找到[vnc]添加以下内容,这个IP地址填写的是controller节点的IP地址
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://10.0.10.188:6080/vnc_auto.html
1.7.找到[glance]添加如下内容
api_servers = http://controller:9292
1.8.找到[oslo_concurrency]添加如下内容
lock_path = /var/lib/nova/tmp
1.9.找到[placement]添加如下内容
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = redhat
1.10.找到[libvirt]添加以下内容 真实境请不要加这一条,这是因为在ESXI宿主机上做,不加之后的实例起不来
virt_type = qemu
1.11 systemctl enable libvirtd.service openstack-nova-compute.service 设置nova开机自启动
1.12 systemctl start libvirtd.service openstack-nova-compute.service 开启nova服务
以下在controller节点操作
1. source admin.sh 加载admin的环境变量
2. openstack compute service list --service nova-compute 查看controller节点上的计算服务
3. su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova 在controller节点上发现compute主机
4. openstack compute service list 在controller节点上查看计算节点
如图可以看到,至此,nova组件安装配置完毕
安装以及配置neutron组件
1.以下操作在controller节点上
1.1. mysql -u root –p 进入mariadb数据库
1.2. create database neutron; 创建名为neutron的数据库
1.3. grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'redhat'; 创建数据库用户并设置密码为redhat
1.4.grant all privileges on neutron.* to 'neutron'@'%' identified by 'redhat';
1.5. source admin.sh 加载下admin的环境变量
1.6. openstack user create --domain default --password-prompt neutron 创建一个名为neutron的用户,这里设置的密码为redhat
1.7. openstack role add --project service --user neutron admin 添加角色
1.8. openstack service create --name neutron --description "OpenStack Networking" network 创建一个neutron服务
1.9.创建网络服务的API端点
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696
1.10. 安装neutron组件,这是一个为云主机提供网络的重要组件
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
1.11. vim /etc/neutron/neutron.conf 编辑neutron配置文件
1.12.找到[database],添加如下内容
connection = mysql+pymysql://neutron:redhat@controller/neutron redhat是neutron数据库的密码
1.13.找到[DEFAULT]添加如下内容
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:redhat@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
1.14.找到[keystone_authtoken]添加如下内容
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = redhat
1.15.找到[oslo_concurrency] 添加如下内容
lock_path = /var/lib/neutron/tmp
1.16.在[DEFAULT]下面空一格添加如下内容
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = redhat
1.17. vim /etc/neutron/plugins/ml2/ml2_conf.ini 编辑ml2_conf.ini文件
1.18.在[DEFAULT]下空一格添加如下内容,注意空格,详情见下图
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = true
1.19. vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini 修改linuxbirdge配置文件
1.20.在[DEFAULT]下空一格添加如下内容,注意ens224是给云主机上网的网卡,未配置IP,ens192网卡上是配置的管理IP,你要根据实际的情况看你网卡的号是多少
[DEFAULT]
[linux_bridge]
physical_interface_mappings = provider:ens224
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
1.21. vim /etc/neutron/dhcp_agent.ini 配置dhcp
1.22.找到[DEFAULT]添加如下内容
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
1.23. vim /etc/neutron/metadata_agent.ini 编辑metadata置文件
1.24.找到[DEFAULT]添加如下内容 redhat是给元数据代理设置的密码
nova_metadata_host = controller
metadata_proxy_shared_secret = redhat
1.25. vim /etc/nova/nova.conf 编辑nova配置文件
1.26.找到[neutron]添加如下内容,注意图中的redhat是密码,根据实际情况写
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = redhat
service_metadata_proxy = true
metadata_proxy_shared_secret = redhat
1.27. ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini 做个软链接
1.28.填充数据库
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
1.29. systemctl restart openstack-nova-api.service 重启API服务
1.30.设置neutron服务为开机自启动
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
1.31.开启neutron服务
systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
安装compute节点的neutron服务
1.以下操作在compute节点上
1.1. yum -y install openstack-neutron-linuxbridge ebtables ipset 安装neutron在计算节点上
1.2. vim /etc/neutron/neutron.conf 编辑neutron配置文件
1.3.找到[DEFAULT]添加如下内容
transport_url = rabbit://openstack:redhat@controller
auth_strategy = keystone
1.4.找到[keystone_authtoken] 添加如下内容
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = redhat
1.5. 找到[oslo_concurrency]添加如下内容
lock_path = /var/lib/neutron/tmp
1.6. vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini 修改linuxbridege配置文件
1.7.找到[DEFAULT]空一格添加如下内容,ens224是给云主机上网的网卡而非管理网卡,请注意
[linux_bridge]
physical_interface_mappings = provider:ens224
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
1.8. vim /etc/nova/nova.conf 修改nova配置文件
1.9.找到[neutron]添加如下内容
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = redhat
1.10. systemctl restart openstack-nova-compute.service 重启计算服务
1.11. systemctl enable neutron-linuxbridge-agent.service 将linuxbridge设置为开机自启
1.12. systemctl start neutron-linuxbridge-agent.service 启动服务
至此neutron组件搭建完毕
安装以及配置dashboard
1.以下操作在controller节点
1.1. yum -y install openstack-dashboard 安装dashboard,这是openstack的面板
1.2. vim /etc/openstack-dashboard/local_settings 编辑面板的配置文件
1.3.找到OPENSTACK_HOST,改成如下内容
1.4.找到ALLOWED_HOSTS,修改成如下内容,这里定义的是谁可以访问openstack控制台,*代表所有
1.5.搜索SESSION_ENGINE,发现是一个注释文件,在下面写上如下内容
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
1.6.搜索OPENSTACK_KEYSTONE_URL,改成以下内容
1.7. 搜索OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT,去掉前面的#号注释
1.8. 搜索OPENSTACK_API_VERSIONS发现都被注释了,没关系在下面新写入如下内容
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
1.9.搜索OPENSTACK_KEYSTONE_DEFAULT_DOMAIN,去掉前面的#号注释
1.10.搜索OPENSTACK_KEYSTONE_DEFAULT_ROLE,改成如下内容
1.11.搜索OPENSTACK_NEUTRON_NETWORK,将以下全部改成False
1.12.搜索TIME_ZONE,将时区修改成如下内容
1.13. vim /etc/httpd/conf.d/openstack-dashboard.conf 修改配置文件
1.14.在第四行写上如下内容
WSGIApplicationGroup %{GLOBAL}
1.15. vim /etc/httpd/conf.d/00-placement-api.conf编辑此配置文件,这是一个BUG,官方文档里没有写,如果不操作进去实例会创建机器失败
1.16在文件的最后添加如下内容
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
1.17. systemctl restart httpd.service memcached.service 重启http以及memecache服务
1.18.打开浏览器,输入http://10.0.10.188/dashboard/ 即可访问,IP输入你实际情况的IP,用户名是admin,密码是redhat
至此,openstack搭建完毕
搭建完毕之后,还要做一系列配置才能正常创建主机
以下操作在controller节点
1.1. source admin.sh 加载admin的环境变量
1.2.创建一个名为vmnet的网卡,用于给openstack里面的主机上网
openstack network create --share --external --provider-physical-network provider --provider-network-type flat vmnet
1.3.创建成功之后我们进入openstack网页版 依次点击项目-网络-网络-vmnet
1.14.点击子网
1.15.点击创建子网
1.16.输入子网的名称,还有你要给云主机分配的IP段,我这里分配的是20.0/24段,然后写上网关,下一步
1.17.输入你要分配的IP起始地址,填写DNS,主机路由不用写,然后点击创建
1.18.点击项目-网络-安全组
1.19.创建安全组
1.20.输入名称然后创建安全组 安全组是用来云主机网络安全管控的
1.21.创建了安全组现在来添加规则
1.22.你可以定制规则,就是限制端口不能访问等等,我这里选择放行所有ICMP TCP UDP协议
1.23.没有多选只能手动去添加,添加完成如下图
1.24.点击项目-计算-密钥对
1.25.这个秘钥生成之后会有一个公钥一个私钥,你可以无密码的登录,但是需要加载私钥才行,生成了之后私钥自动下载
1.26.输入秘钥名称,然后秘钥类型 接着点击创建
1.27.创建成功之后会发现,浏览器自动下载了一个私钥,这个私钥就是你登录服务器的凭证
1.28.点击管理员-计算-实例类型 这个实例类型,定义了云主机的资源,如CPU 硬盘 内存等等
1.29.点击创建实例类型
1.30.定义一个给Linux系统的限制,1个CPU 1G内存 30G硬盘然后创建实例类型
1.32创建云主机之前,我们看看有哪些镜像,发现只有一个刚刚测试的镜像,这是一微量级的Linux系统,如果你想要其他的镜像,比如windows Linux 你可以自己制作,也可以到网上下载
1.33始创建主机 点击项目-计算-实例
1.34创建实例
1.35.输入实例的名称,这里是Test,然后下一步
1.36.选择安装镜像,就是你要装什么系统,这里我选择微量级的Linux,然后下一步
1.37.这里就是限制资源的,点击箭头,把它点上去
1.38.网络是刚刚创建的,用于给实例上网的,如果在下面也要点上去这里是正常的
1.39.网络接口不用管直接跳到安全组,把缺省安全组点下去,把我们刚刚创建的安全组点上来
1.40.密钥对点上去
1.41.除此之外还可以载入脚本,它可以在安装之后,自动执行脚本
1.42.其他的我们就不看了 直接创建实例
1.43.可以看到机器正在孵化中,也就是在安装中,能看到IP已经分配了
1.44.我们点击进去
1.45.点击控制台
1.46.可以看到机器以及安装完毕了正在加载中 因为是微量级的所以很快
1.47.点击只显示控制台
1.48这是一个用来测试的镜像这里已经写上用户名密码了 我们输入登录进去
1.49.测试机器可以上网,实验成功
至此openstack搭建完毕
注:如果宿主机是ESXI,请开启以下三个,否则实例机器无法获取IP地址!!!