一、环境要求
硬件环境要求:Vmware虚拟机两台,分别作为控制节点,计算节点。其中,控制节点与计算节点配置需求为:
控制节点: 1 处理器, 4 GB 内存, 及20GB 存储
计算节点: 1 处理器, 4GB 内存, 及20 GB 存储
本次实验所用网段为:192.168.10.0/24
IP分配如下
控制节点
ens33:192.168.10.130
ens34:192.168.20.100
计算节点
ens33:192.168.10.131
ens34:192.168.20.200
Openstack环境不可缺失的支持环境
- Openstack内部通信组件Rabbitmq
- Openstack缓存组件Memcache
- 数据库(MariaDB)
- 其他(DNS服务,Chrony时钟同步)
本实验的总部署为(不做存储节点)
二、安装openstack的前置操作(两台虚拟机同理)
1.修改主机名(控制节点主机名为controller,计算节点主机名为compute)
hostnamectl set-hostname controller
bash #刷新
hostnamectl set-hostname compute
bash #刷新
2.关闭防火墙
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #关闭开机自启动
3.关闭selinux
#修改配置文件,将“SELINUX”的值改为“disabled”
vim /etc/selinux/config
#没有vim命令则安装,有则忽略
yum install -y vim
setenforce 0
4.修改hosts文件,加入控制节点与计算节点的域名解析
#修改配置文件
vim /etc/hosts
#修改成功后,使用ping命令查看是否成功
ping controller
5.配置openstack源
rm -rf /etc/yum.repos.d/* #删除虚拟机本地源
vim /etc/yum.repos.d/openstack.repo #创建源文件
[base]
name=base
baseurl=https://repo.huaweicloud.com/centos/7/os/x86_64/
enable=1
gpgcheck=0
[extras]
name=extrax
baseurl=https://repo.huaweicloud.com/centos/7/extras/x86_64/
enable=1
gpgcheck=0
[updates]
name=updates
baseurl=https://repo.huaweicloud.com/centos/7/updates/x86_64/
enable=1
gpgcheck=0
[queens]
name=queens
baseurl=https://repo.huaweicloud.com/centos/7/cloud/x86_64/openstack-queens/
enable=1
gpgcheck=0
[virt]
name=virt
baseurl=https://repo.huaweicloud.com/centos/7/virt/x86_64/kvm-common/
enable=1
gpgcheck=0
#刷新源
yum clean all
yum repolist
6、配置虚拟机网卡网段
#在虚拟机上配置
#进入网卡配置界面
nmtui
#所配置的控制节点与计算节点的网卡网段不与虚拟机处于同一网段,控制节点与计算节点处于同一网段
7.虚拟机拍快照方法
#关闭虚拟机
init 0
三、控制节点配置
1、安装软件 python-openstackclient
yum install -y python-openstackclient
2、配置时钟同步服务
#安装软件
yum install chrony -y
#修改配置文件
vim /etc/chrony.conf
#在以下“server”前加“#”注释掉,不使用默认的时间同步服务器,并在末行添加
llow 192.168.10.0/24 #192.168.98/24 #为允许时间同步的网段,根据实际环境修改
local stratum 10 #本地时钟提供服务
#重启服务并加入开机自启动
systemctl start chronyd
systemctl enable chronyd
3、安装数据库与配置
yum install mariadb mariadb-server python2-PyMySQL -y #安装数据库
#修改配置文件
vim /etc/my.cnf.d/openstack.cnf
#添加
[mysqld]
bind-address = 192.168.10.130 #本机IP
default-storage-engine = innodb #默认搜索引擎
innodb_file_per_table = on
max_connections = 4096 #最大连接数
collation-server = utf8_general_ci #字符顺序
character-set-server = utf8 #字体
# 启动数据库并加入开机自启动
systemctl start mariadb
systemctl enable mariadb
# 初始化数据库
mysql_secure_installation #进入界面后配置新密码
#配置新密码,出现[Y/n]选项时除管理员远程登录外,全选Y
管理员远程登录:
4、安装消息队列服务(rabbitmaq)
#安装软件
yum install rabbitmq-server -y
#启动服务并加入开机自启
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
5、配置rabbitmq
#为rabbitmq添加名为‘openstack’的用户,密码为‘123456’
rabbitmqctl add_user openstack 123456
#为openstack用户添加最高权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
#验证rabbitmq是否安装成功,端口(5672)是否正常
netstat -lantu |grep 5672 #命令失败,则可能是没有安装软件 netstat
6、安装缓存服务(memcache)并配置
yum install memcached python-memcached -y
#配置memcached
#打开配置文件
vim /etc/sysconfig/memcached
#修改'OPTIONS'的值,末尾加入'controller',此处的'controller'为控制节点主机名
#启动并加入开机自启动
systemctl start memcached
systemctl enable memcached
7、安装etcd
#安装软件
yum install etcd -y
#修改配置文件,如果文件内容开头由“#”,则删除所有“#”,使用“:%s/#//g”命令
vim /etc/etcd/etcd.conf
#修改相应内容
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.80.130:2380" #ip为主机ip
ETCD_LISTEN_CLIENT_URLS="http://192.168.80.130:2379"
ETCD_NAME="controller" #controller 主机名
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.80.130:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.80.130:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.80.150:2380" #修改主机名与IP
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
#启动服务并加入开机自启动
systemctl start etcd
systemctl enable etcd
8、keystone组件安装
#创建keystone数据库
#进入数据库
mysql -uroot -p123456
#创建keystone数据库
create database keystone;
#为系统用户keystone,赋予开放本地/远程登录权限,登录密码为‘123456’
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
#刷新数据库权限
flush privileges;
#退出数据库
exit
9、安装keystone组件
#安装软件
yum install openstack-keystone httpd mod_wsgi -y
#备份原始配置文件
cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
#将配置文件去掉“#号行”
cat /etc/keystone/keystone.conf.bak | grep -v ^# | uniq > /etc/keystone/keystone.conf
#编辑配置文件
vim /etc/keystone/keystone.conf
#在文件相应内容下面添加
[database]
connection=mysql+pymysql://keystone:123456@controller/keystone
#controller:主机名 123456:keystone数据库的密码
[token]
provider = fernet
#填充数据库,无返回值则表示正常
su -s /bin/sh -c "keystone-manage db_sync " keystone
#初始化Fernet key库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
10、引导身份认证服务,配置keystone的相关认证信息
keystone-manage bootstrap --bootstrap-password 123456 \
--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
参数说明:
--bootstrap-password:keystone管理员密码,openstack登录界面的管理员admin密码
--bootstrap-admin-url:管理员认证URL
--bootstrap-internal-url:内部认证URL
--bootstrap-public-url:外部认证URL
--bootstrap-region-id:指定区域名
11、配置Apache服务
#编辑配置文件,第96行加入”ServerName controller“
vim /etc/httpd/conf/httpd.conf
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
#为wsgi-keystone.conf创建链接到Apache服务目录
#启动服务并加入开机自启
systemctl start httpd.service
systemctl enable httpd.service
12、Keystone部署验证
#创建环境脚本
vim /root/admin-openrc
#在文件中添加内容
export OS_USERNAME=admin
export OS_PASSWORD=123456
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 #controller #控制节点主机名
export OS_IDENTITY_API_VERSION=3
#参数说明:
export OS_USERNAME=admin:登录keystone的admin(管理员)帐号
export OS_PASSWORD=ADMIN_PASS:keystone预设的密码
export OS_PROJECT_NAME=admin:指定Openstack的项目类型
export OS_USER_DOMAIN_NAME=Default:指定Openstack用户所属域
export OS_PROJECT_DOMAIN_NAME=Default:指定Openstack项目所属域
export OS_AUTH_URL=http://controller:35357/v3:指定认证链接
export OS_IDENTITY_API_VERSION=3:指定认证版本
#执行脚本
. /root/admin-openrc
#查看当前环境
env | grep OS
#验证结果
openstack token issue
13、创建域、用户与项目
#创建一个domain(域),名为“example”,描述为“TestExample”
openstack domain create --description "Test Example" example
#在默认域(default domain)下,创建一个project(项目),名为“service”,描述为“Service Project”
openstack project create --domain default --description "Service Project" service
#在默认域下(default domain)下,创建一个project(项目),名为“Demo”,描述为“Demo Project”
openstack project create --domain default --description "Demo Project" demo
#查看当前环境下的所有项目(project)
openstack project list
14、创建用户与授权
#在默认域下创建一个用户,名为“leon‘’,后置手动设置密码
openstack user create --domain default --password-prompt leon #123456
#创建Openstack的“普通用户”角色,名为“user”
openstack role create user
#查看当前都有哪些角色
openstack role list
将用户“leon”在“demo‘’项目中的角色,规划为“普通用户”的角色(指令不会返回结果)
openstack role add --project demo --user leon user
#验证登录
unset OS_AUTH_URL OS_PASSWORD ##取消环境变量的密码
#用户admin登录
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
password:123456
#用户leon登录
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username leon token issue
password:123456
15、glance组件安装
#创建Glance数据库
#登录数据库
mysql -uroot -p123456
#创建glance数据库
CREATE DATABASE glance;
#赋予系统用户glance,开放本地远程登录,登录密码为“glance_db”
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance_db';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance_db';
#刷新权限表
Flush privileges;
16、创建glance相关信息并配置glance组件
#创建glance用户,名为glance
#先执行环境变量
. /root/admin-openrc
#在openstack默认域中创建glance用户:(设置密码为:666666)
openstack user create glance --domain default --password 666666
#将glance用户在service项目(project)中赋予管理员角色admin
openstack role add --project service --user glance admin(执行后无返回结果即正常)
#创建一个类型为image(镜像)的服务(service)实体,描述为“OpenStack Image”
openstack service create --name glance --description "OpenStack Image" image
#为image服务实体在RegionOne区域中创建三种供访问的Endpoint 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
#配置glance-api配置文件
#安装软件
yum install openstack-glance -y
#备份glance-api配置文件
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
#将原始配置文件去掉带”#“号行
cat /etc/glance/glance-api.conf.bak | grep -v ^# | uniq > /etc/glance/glance-api.conf
#编辑配置文件
vim /etc/glance/glance-api.conf
#在以下选项里分别添加以下参数
[database]
connection = mysql+pymysql://glance:glance_db@controller/glance
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[keystone_authtoken]
auth_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 = 666666 #创建glance用户时的密码
[paste_deploy]
flavor = keystone
17.配置glance-registry配置文件
#备份原始配置文件
cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak
#将原始配置文件去掉带”#“号行:
cat /etc/glance/glance-registry.conf.bak | grep -v ^# | uniq > /etc/glance/glance-registry.conf
#编辑配置文件
vim /etc/glance/glance-registry.conf
#在对应内容下添加
[database]
connection = mysql+pymysql://glance:glance_db@controller/glance
[keystone_authtoken]
auth_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 = 666666
[paste_deploy]
flavor = keystone
18. 填充glance数据库
#填充数据库,可到数据库内查看
su -s /bin/sh -c "glance-manage db_sync" glance
#启动服务并加入开机自启
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service
19、glance部署验证
#运行管理员环境脚本,下载测试镜像
. /root/admin-openrc
#下载一个测试镜像
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
#如果没有wget命令,则安装软件
yum install -y wget
#创建openstack镜像
openstack image create "cirros" \
--file cirros-0.4.0-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
#查询镜像
openstack image list
#查询镜像
openstack image list
20、nova -api安装
#进入数据库
mysql -uroot -p123456
#创建nova组件相关数据库
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
#创建nova数据库相关用户以及访问权限
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova_db';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova_db';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova_db';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova_db';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova_db';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova_db';
#刷新权限
flush privileges;
21、创建 nova相关信息
#执行环境变量
. /root/admin-openrc
#在openstack默认域中创建nova用户:(执行后需要设置密码:nova_user,并确认密码)
openstack user create nova --domain default --password nova_user
#将nova用户在service项目(project)中赋予管理员角色admin(执行后无返回结果即正常)
openstack role add --project service --user nova admin
创建一个名为compute的服务(service)实体,描述为“OpenStack Compute”
openstack service create --name nova --description "OpenStack Compute" compute
#为compute服务实体在RegionOne区域中创建三种供访问的EndpointAPI
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
#在openstack默认域中创建placement用户(执行后需设置密码:placement_123456,并确认密码)
openstack user create --domain default --password placement_123456 placement
#将placement用户在service项目(project)中赋予管理员角色admin(执行后无返回结果即正常)
openstack role add --project service --user placement admin
创建一个名为placement的服务(service)实体,描述为“Placement API”
openstack service create --name placement --description "Placement API" placement
#为Placement服务实体在RegionOne区域中创建三种供访问的Endpoint 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
22、 安装 并配置nova组件
yum install openstack-nova-api \
openstack-nova-conductor \
openstack-nova-console \
openstack-nova-novncproxy \
openstack-nova-scheduler \
openstack-nova-placement-api -y
23、配置 nova.conf配置文件
#备份原始配置文件
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
#将原始配置文件去掉带”#“号行
cat /etc/nova/nova.conf.bak | grep -v ^# | uniq > /etc/nova/nova.conf
#编辑配置文件
vim /etc/nova/nova.conf
#在以下选项里分别添加以下参数
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 192.168.80.150
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
connection=mysql+pymysql://nova:nova_db@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova_db@controller/nova
[api]
auth_strategy = keystone
[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 =nova_user #创建nova用户时的密码
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_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 #创建placement用户时的密码
password = placement_123456
#保存退出,确保已关闭系统自带防火墙
systemctl stop firewalld
systemctl disable firewalld
24、配置补丁bug
#打开配置文件
vim /etc/httpd/conf.d/00-nova-placement-api.conf
#在第13行加入以下参数
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
#重启服务
systemctl restart httpd
25、填充数据库与启动服务(此步骤完成,切换到计算节点进行配置)
#填充nova-api数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
#填充cell0数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
#创建cell1的cell (正常返回一个连串无规则代码即可)
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
#同步nova数据库(可忽略警告信息)
su -s /bin/sh -c "nova-manage db sync" nova
#较验cell0和cell1的注册是否正常
nova-manage cell_v2 list_cells
#启动服务并加入开机自启
systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
26、查看当前所有计算节点(在计算节点的nova配置完成后可查看)
#同步cell(需要配置完compute节点后,才执行以下命令)
nova-manage cell_v2 discover_hosts --verbose
#查看当前的计算节点
#使用openstack管理员环境变量
. /root/admin-openrc
#查看所有计算节点
openstack compute service list --service nova-compute
#如果有新加入的计算节点,可使用以下两种方法
#方法一,使用以下命令来发现新计算节点
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
#方法二,在控制节点的nova.conf配置文件里,设置自动发现计算节点的时间间隔
vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300 #默认单位:秒
27.安装控制节点的neutron组件
#创建neutron数据库
mysql -u root -p123456
#创建neutron组件相关数据库:
CREATE DATABASE neutron;
#为系统用户neutron赋予本机/远程访问权限以及设置登录密码:
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron_db';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'IDENTIFIED BY 'neutron_db';
#创建neutron相关信息
#先执行环境变量
. /root/admin-openrc
#在openstack默认域中创建neutron用户
openstack user create --domain default --password neutron_123456 neutron
#将neutron用户在service项目(project)中赋予管理员角色admin
openstack role add --project service --user neutron admin
#创建一个名为network的服务(service)实体,描述为“OpenStack Networking”
openstack service create --name neutron --description "OpenStack Networking" network
#为neutron服务实体在RegionOne区域中创建三种供访问的Endpoint 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
28、neutro配置
#安装组件
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables -y
#配置neutron相关配置文件
#备份原始配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
#将原始配置文件去掉带”#“号行
cat /etc/neutron/neutron.conf.bak | grep -v ^# | uniq > /etc/neutron/neutron.conf
#编辑配置文件
vim /etc/neutron/neutron.conf
#在以下选项里分别添加以下参数
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[database]
connection = mysql+pymysql://neutron:neutron_db@controller/neutron
[keystone_authtoken]
auth_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 = neutron_123456
[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 = nova_user
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
#配置ml2模块配置文件
#备份原始配置文件:
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
#将原始配置文件去掉带”#“号行
cat /etc/neutron/plugins/ml2/ml2_conf.ini.bak | grep -v ^# | uniq > /etc/neutron/plugins/ml2/ml2_conf.ini
#编辑配置文件:
vim /etc/neutron/plugins/ml2/ml2_conf.ini
#在文件内容下添加
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
#配置网桥配置文件
#备份原始配置文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
#原始配置文件去掉带”#“号行
cd /etc/neutron/plugins/ml2
cat linuxbridge_agent.ini.bak | grep -v ^# | uniq > linuxbridge_agent.ini
#编辑配置文件
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
#在文件内容下添加
[linux_bridge]
physical_interface_mappings = provider:ens33 #处此的“ens33”为控制节点的外部/管理网络网卡名
[vxlan]
enable_vxlan = true
local_ip = 192.168.20.100 #控制节点隧道网口IP地址 ,此处ip不能与虚拟机处于同一网段
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
#保存退出
29.配置网桥
由于网桥工作于数据链路层,在iptables没有开启 bridge-nf时,数据会直接经过网桥转发,结果就是对FORWARD的设置失效;Centos默认不开启bridge-nf透明网桥功能,启动bridge-nf方式
#编辑配置文件
vim /etc/sysctl.conf
#添加
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
#保存退出
#加重网桥模块
modprobe br_netfilter
#执行
/sbin/sysctl -p
#将此模块加入开机自加载
#在/etc/新建rc.sysinit 文件,并写入以下内容
vim /etc/rc.sysini
#添加
\#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
#在/etc/sysconfig/modules/目录下新建文件br_netfilter.modules
vim /etc/sysconfig/modules/br_netfilter.modules
#添加内容
modprobe br_netfilter
#增加权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
#重启后检查模块
lsmod |grep br_netfilter
#配置三层代理Layer-3(L3)为自助虚拟网络提供路由和NAT服务
cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.bak
cat /etc/neutron/l3_agent.ini.bak | grep -v ^# | uniq > /etc/neutron/l3_agent.ini
#编辑配置文件
vim /etc/neutron/l3_agent.ini
#在相应内容下添加
[DEFAULT]
interface_driver = linuxbridge
#配置DHCP代理配置文件
#备份原始配置文件
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
#将原始配置文件去掉带”#“号行:
cat /etc/neutron/dhcp_agent.ini.bak | grep -v ^# | uniq > /etc/neutron/dhcp_agent.ini
#编辑配置文件
vim /etc/neutron/dhcp_agent.ini
#在相应内容下添加
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
#配置元数据代理配置文件
#备份原始配置文件
cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.bak
#将原始配置文件去掉带”#“号行
cat /etc/neutron/metadata_agent.ini.bak | grep -v ^# | uniq > /etc/neutron/metadata_agent.ini
#编辑配置文件:
vim /etc/neutron/metadata_agent.ini
#在相应内容下添加
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = meta_123456
30.配置nova配置文件里neutron设置
#编辑配置文件
vim /etc/nova/nova.conf
#在文件内容下添加
[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 = neutron_123456 #创建用户neutron的密码
service_metadata_proxy = true
metadata_proxy_shared_secret = meta_123456
#在控制节点(controller)上创建ml2软链接,并同步neutron数据库
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
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
#重启/启动相关服务,并将neutron相关服务加入开机自启
systemctl restart openstack-nova-api.service
systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-l3-agent.service neutron-metadata-agent.service
systemctl start neutron-server.service
systemctl start neutron-linuxbridge-agent.service
systemctl start neutron-dhcp-agent.service
systemctl start neutron-metadata-agent.service
systemctl start neutron-l3-agent.service
31、部署验证
#使用openstack管理员环境变量
. /root/admin-openrc
openstack network agent list (provider二层网络)
32 、安装配置Horizon组件
#安装horizon
#在安装horizon组件
yum install openstack-dashboard -y
#备份原始配置文件
cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.bak
#编辑配置文件:
vim /etc/openstack-dashboard/local_settings
#修改配置文件
#第188行修改主机名为“controller”:
OPENSTACK_HOST = "controller"
#第38行,设置“*”号,允许所有主机访问
#第164行,缓存设置,加入以下内容
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
#第167-168行加入 #删除括号内原来有的内容
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
#第189行为使用鉴权API的v3版本
#第75行,开启多域支持 #前面去除‘#’
第64行配置API版本 #前面去除‘#’
第97行,设置默认域为“Default” #前面去除‘#’
第190行,设置默认角色为“user”
第462行,设置时区为“Asia/Shanghai”
#编辑配置文件
vim /etc/httpd/conf.d/openstack-dashboard.conf
#在配置文件中加入
WSGIApplicationGroup %{GLOBAL}
#重启服务
systemctl restart httpd.service
systemctl restart memcached.service
四、计算节点配置
1、配置时间同步服务
#安装软件chrony
yum install chrony -y
#修改配置文件,在第3行-6行前加“#”注释掉,不使用默认的时间同步服务器
vim /etc/chrony.conf
#在末行添加
server controller iburst
#重启服务并加入开机自启动
systemctl restart chronyd
systemctl enable chronyd
#较验时间同步
chronyc sources -v
下 图*号表示时间已同步(需要等待一段时间)
2、安装nova-compute并编辑相关配置文件
#安装软件
yum install openstack-nova-compute -y
#编辑nova配置文件
#备份原始配置文件
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
#将原始配置文件去掉带”#“号行
cat /etc/nova/nova.conf.bak | grep -v ^# | uniq > /etc/nova/nova.conf
#编辑配置文件
vim /etc/nova/nova.conf
#在文件内容下分别添加
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 192.168.10.131 #计算节点的管理网口IP
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[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 = nova_user #控制节点创建nova用户时的密码
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_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 = placement_123456 #控制节点创建placement用户时的密码
#检测计算节点是否支持硬件虚拟化加速(返回值1,为支持)
egrep -c '(vmx|svm)' /proc/cpuinfo
@由于本实验是由虚拟机来做计算节点,所以返回值不>1.需要在/etc/nova/nova.conf配置文件的[libvirt]选项中加入以下内容
#打开配置文件
vim /etc/nova/nova.conf
#在文件内容下面添加
[libvirt]
virt_type = qemu
#启动服务并加入开机自启,如果启动报错,可能是openstack用户权限失效,可再给一遍后尝试,若再启动不成功,则可查看日志
systemctl start libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.service
3、安装neutron组件
#安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y
#配置neutron主配置文件:/etc/neutron/neutron.conf
#备份原始配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
#将原始配置文件去掉带”#“号行
cat /etc/neutron/neutron.conf.bak | grep -v ^# | uniq > /etc/neutron/neutron.conf
#编辑配置文件
vim /etc/neutron/neutron.conf
#在文件相应内容下添加
[DEFAULT]
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
[keystone_authtoken]
auth_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 = neutron_123456 #控制节点创建用户neutron的密码
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
#配置网桥配置文件
#备份原始配置文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
#将原始配置文件去掉带”#“号行
cd /etc/neutron/plugins/ml2
cat linuxbridge_agent.ini.bak | grep -v ^# | uniq > linuxbridge_agent.ini
#编辑配置文件
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
#找到相应内容添加
[vxlan]
enable_vxlan = true
local_ip = 192.168.20.150 #计算节点隧道网口IP地址,隧道节点ip必须与控制节点隧道ip处于同一网段
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
4、配置网桥
#开启bridge-nf透明网桥功能,启动bridge-nf
#编辑配置文件
vim /etc/sysctl.conf
#在文件末尾添加
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
#保存退出
#加重网桥模块
modprobe br_netfilter
#执行
/sbin/sysctl -p
#将此模块加入开机自加载
#在/etc/新建rc.sysinit 文件,并写入以下内容
vim /etc/rc.sysinit
\#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
#在/etc/sysconfig/modules/目录下新建文件br_netfilter.modules
vim /etc/sysconfig/modules/br_netfilter.modules
#写入
modprobe br_netfilter
#增加权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
#重启后检查模块
lsmod |grep br_netfilter
4、编辑nova配置文件,加入neuron选项功能(配置完成后,切换到控制节点26配置)
#编辑配置文件
vim /etc/nova/nova.conf
#在文件相应内容下添加
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = defaultI
region_name = RegionOne
project_name = service
username = neutron
password = neutron_123456
#重启/启动相关服务,并加入开机自启
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
五、登录Horizon
http://192.168.10.130/dashboard
#192.168.10.130为controller的管理网段IP地址
登录用户名:admin
密码:123456
登录成功