openstack云平台搭建

一、环境要求

硬件环境要求: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环境不可缺失的支持环境

  1. Openstack内部通信组件Rabbitmq
  2. Openstack缓存组件Memcache
  3. 数据库(MariaDB)
  4. 其他(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

​​

登录成功 

​​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值