openstack-train版本集群部署,openstack组件介绍,openstack自定义镜像创建虚拟机,openstack简单优化

1、openstack-train版本集群部署

官网组件介绍:openstack组件
主要组件:

  • Keystone(认证管理服务):主要为其他组件进行身份认证、授权、服务发现等功能。
  • Glance(镜像管理服务):主要为虚拟机提供镜像的注册、查询、存储等功能。
  • Nova(计算管理服务):主要为裸机、虚拟机等提供硬件资源计算、分配、管理等功能。
  • placement(Nova内的组件):主要检查、收集node节点的资源状态,从而为Nova组件提供支持。
  • Neutron(网络服务):主要为master和node节点、node的虚拟机和虚拟机之间提供网络环境等功能
  • cinder(块存储):,提供存储资源池,类似于U盘,可以实现不同虚拟机之间的数据转移等功能
  • Horizon(web管理接口):服务名字为dashboard,主要为openstack集群提供网页界面控制,实现可视化控制集群。

环境准备:
系统官网下载地址:centos7.2
master虚拟机至少双核以上,开启CPU虚拟化,网卡最好双网卡,一个NAT模式,一个主机模式。
node虚拟机至少双核以上,开启CPU虚拟化,内存和硬盘越高越好(看电脑配置),网卡设置双网卡,一个NAT模式,一个主机模式。
在这里插入图片描述

1.1 master初始化,安装源

编译内核文档:编译内核
yum安装内核为下面
默认centos 7.2的内核是3.10,内核版本要升级,要不然不能安装内核模块

安装源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

安装稳定版本
yum --enablerepo=elrepo-kernel install kernel-ml -y

查看全部内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
tail /boot/grub2/grubenv     查看默认启动的内核
grub2-set-default 0   设置对应的数字启动内核,0代表5.17版本
grub2-mkconfig -o /boot/grub2/grub.cfg  重新加载启动文件

安装内核模块
yum install bridge-utils  -y

vi /etc/sysctl.conf  编辑文件

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

echo br_netfilter > /etc/modules-load.d/br_netfilter.conf 设置开机自启模块

重启系统,确认内核模块生效
reboot   重启系统
uname -r 确认新的内核版本
lsmod |grep br_netfilter
sysctl -p     查看配置是否生效

在这里插入图片描述
官网环境介绍:openstack部署环境介绍

注意:不要使用阿里yum源、腾讯yum源等其他源,用centos本身自带的源即可。
```bash
初始化
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 
systemctl disable NetworkManager.service

配置时区同步
yum install -y chrony
timedatectl set-timezone Asia/Shanghai  设置时区
vi /etc/chrony.conf
#注释这些
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#写对准这个时间服务器
server time1.aliyun.com iburst

systemctl enable chronyd
systemctl start chronyd
chronyc sources -V   查看是否开始校对

vi /etc/hosts  设置hosts
192.168.116.135 master.openstack
192.168.116.136 node1.openstack

hostnamectl set-hostname master.openstack

安装openstack源
yum install -y centos-release-openstack-train.noarch
yum install python-openstackclient openstack-selinux wget -y  安装依赖包

安装mariadb或者mysql,rabbitmq,memcached
yum install mariadb mariadb-server python2-PyMySQL -y 

配置mysql
vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 0.0.0.0
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

配置rabbitmq
yum install rabbitmq-server -y

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

设置账户openstack和密码test1234,设置最高权限
rabbitmqctl add_user openstack  test1234
rabbitmqctl set_user_tags openstack administrator
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

开启网页插件
rabbitmq-plugins enable rabbitmq_management

安装memcached
yum install memcached python-memcached -y
vi /etc/sysconfig/memcached   修改缓存大小、监听地址

CACHESIZE="1024"
OPTIONS="-l 0.0.0.0"

systemctl enable memcached.service
systemctl start memcached.service

ss -tnl    确认端口都打开,服务正常运行
25672   rabbitmq端口
3306    mysql端口
11211   memcached端口
15672   rabbitmq网页端口
4369    rabbitmq端口
5672    rabbitmq端口


访问rabbitmq网页,查看账户是否创建成功
http://192.168.116.135:15672/
openstack   账户
test1234    密码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2 master安装keystone组件

官网安装文档:keystone安装

数据库配置
mysql
创建数据库和设置账户
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'test1234';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'test1234';
exit

安装和配置
yum install openstack-keystone httpd mod_wsgi -y

vi /etc/keystone/keystone.conf  配置keystone和mysql连接,文件不要写中文内容

[database]
#keystone:test1234是数据库账户和密码
#master.openstack是master的主机名,/keystone这里的是数据库名字
connection = mysql+pymysql://keystone:[email protected]/keystone

[token]
#在这里添加
provider = fernet

su -s /bin/sh -c "keystone-manage db_sync" keystone 启动配置

生成2个账户信息目录
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

注册身份,只要改master.openstack这个主机名就行
--bootstrap-password admin 这个admin是账户admin的密码

keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://master.openstack:5000/v3/ \
  --bootstrap-internal-url http://master.openstack:5000/v3/ \
  --bootstrap-public-url http://master.openstack:5000/v3/ \
  --bootstrap-region-id RegionOne

配置httpd
vi /etc/httpd/conf/httpd.conf  添加

ServerName master.openstack:80

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 
systemctl enable httpd.service
systemctl start httpd.service

创建admin账户变量
vi /etc/profile.d/openstack-admin.sh

#!/bin/bash
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://master.openstack:5000/v3
export OS_IDENTITY_API_VERSION=3


source /etc/profile.d/openstack-admin.sh 
openstack user list   查看账户是否生效

在这里插入图片描述

1.3 在master创建账户,域和项目

官网文档:创建账户,域和项目

创建域example
openstack domain create --description "An Example Domain" example

创建项目service
openstack project create --domain default \
  --description "Service Project" service

创建项目myproject
openstack project create --domain default \
  --description "Demo Project" myproject

创建用户myuser,需要输入密码test1234
openstack user create --domain default \
  --password-prompt myuser

创建角色规则myrole
openstack role create myrole

将项目,用户和规则绑定
openstack role add --project myproject --user myuser myrole

unset OS_AUTH_URL OS_PASSWORD   取消刚才定义的环境变量

输入admin账户密码admin,测试账户认证功能
openstack --os-auth-url http://master.openstack:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue

  
输入myuser账户密码test1234,测试账户认证功能
openstack --os-auth-url http://master.openstack:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue


修改admin变量,下面都是用admin变量进行创建组件
vi /etc/profile.d/openstack-admin.sh

#!/bin/bash
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://master.openstack:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

source /etc/profile.d/openstack-admin.sh
openstack token issue  测试token

查看keystone数据库是否生成了数据
mysql -u keystone -p'test1234' -e 'use keystone;show tables;'

在这里插入图片描述
在这里插入图片描述

1.4 master安装glance组件

官网文档:glance组件安装文档
安装glance后,镜像测试文档:image镜像

配置mysql
mysql
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'test1234';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'test1234';
exit

source /etc/profile.d/openstack-admin.sh 用admin变量创建配置

创建glance账户,密码配test1234,创建身份认证
openstack user create --domain default --password-prompt glance 

授权
openstack role add --project service --user glance admin

创建service
openstack service create --name glance \
  --description "OpenStack Image" image

在3个网络上开放端口
openstack endpoint create --region RegionOne \
  image public http://master.openstack:9292
  
openstack endpoint create --region RegionOne \
  image internal http://master.openstack:9292
  
openstack endpoint create --region RegionOne \
  image admin http://master.openstack:9292

配置glance
yum install openstack-glance -y

vi /etc/glance/glance-api.conf

[database]
#设置连接数据库
connection = mysql+pymysql://glance:[email protected]/glance

[keystone_authtoken]
#设置连接到keystone的信息,username和password是上面注册的账户和密码
www_authenticate_uri  = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = test1234

[paste_deploy]
#设置连接到keystone
flavor = keystone

[glance_store]
#设置存放镜像的目录和格式
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

su -s /bin/sh -c "glance-manage db_sync" glance 启动配置

systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api.service

默认创建后就会自动生成images目录,不用自己新建,注意账户权限是glance即可
ll /var/lib/glance/

下载官网测试镜像,测试glance组件是否能正常工作
在浏览器打开下载这个镜像然后上传到这个目录下
http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

上传镜像到组件
cd /var/lib/glance/images/
glance image-create --name "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --visibility public
  
glance image-list   查看镜像列表

查看数据库是否生成文件
mysql -u keystone -p'test1234' -e 'use keystone;show tables;'

在这里插入图片描述

1.5 maser安装placement

官网介绍文档:placement

mysql配置
mysql
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'test1234';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'test1234';
exit

source /etc/profile.d/openstack-admin.sh
创建账户placement,密码配test1234,创建身份认证
openstack user create --domain default --password-prompt placement

授权
openstack role add --project service --user placement admin

创建service
openstack service create --name placement \
  --description "Placement API" placement

创建3个网络端口

openstack endpoint create --region RegionOne \
  placement public http://master.openstack:8778

 openstack endpoint create --region RegionOne \
  placement internal http://master.openstack:8778

openstack endpoint create --region RegionOne \
  placement admin http://master.openstack:8778

配置placement
yum install openstack-placement-api -y 

vi /etc/placement/placement.conf  修改配置

[placement_database]
#设置数据库信息
connection = mysql+pymysql://placement:[email protected]/placement

[api]  
#设置API为keystone
auth_strategy = keystone

[keystone_authtoken]
#设置上面注册的账户信息
auth_url = http://master.openstack:5000/v3
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = test1234


su -s /bin/sh -c "placement-manage db sync" placement 
会出现下面这个警告,忽略即可
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1280, u"Name 'alembic_version_pkc' ignored for PRIMARY key.")
  result = self._query(query)

修改httpd配置
vi /etc/httpd/conf.d/00-placement-api.conf   文件底部添加

<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion>
</Directory>

systemctl restart httpd

查看数据库是否生成文件
mysql -u placement -p'test1234' -e 'use placement;show tables;'

在这里插入图片描述

1.6 master安装nova组件

官网介绍文档:nova


mysql配置
mysql
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'test1234';
 GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'test1234';

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

 GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'test1234';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'test1234';

exit

source /etc/profile.d/openstack-admin.sh
创建账户nova,密码配test1234,创建身份认证
openstack user create --domain default --password-prompt nova

授权
openstack role add --project service --user nova admin

创建service
openstack service create --name nova \
  --description "OpenStack Compute" compute

创建3个服务端口
openstack endpoint create --region RegionOne \
  compute public http://master.openstack:8774/v2.1

openstack endpoint create --region RegionOne \
  compute internal http://master.openstack:8774/v2.1
  
openstack endpoint create --region RegionOne \
  compute admin http://master.openstack:8774/v2.1

配置nova
yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler -y

vi /etc/nova/nova.conf  修改配置

[DEFAULT]
#设置组件
enabled_apis = osapi_compute,metadata
my_ip = 192.168.116.135
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
#配置rabbitmq创建的账户和密码
transport_url = rabbit://openstack:[email protected]:5672/

[api_database]
#配置nova_api数据库的连接
connection = mysql+pymysql://nova:[email protected]/nova_api

[database]
#配置连接nova数据库信息
connection = mysql+pymysql://nova:[email protected]/nova

[api]
#设置认证方式
auth_strategy = keystone

[keystone_authtoken]
#设置认证信息,账户和密码为上面注册的信息
www_authenticate_uri = http://master.openstack:5000/
auth_url = http://master.openstack:5000/
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = test1234

[vnc]
#设置监听地址为本机IP
enabled = true
erver_listen = 192.168.116.135
server_proxyclient_address = 192.168.116.135

[glance]
#设置glance信息
api_servers = http://master.openstack:9292

[oslo_concurrency]
#锁路径配置
lock_path = /var/lib/nova/tmp
#开启自动扫描添加node
[scheduler]
discover_hosts_in_cells_interval = 300

[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://master.openstack:5000/v3
username = placement
password = test1234

grep "^[a-Z]" /etc/nova/nova.conf  确认配置

启动配置
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

出现警告,不用管
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release')
  result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release')
  result = self._query(query)

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova  查看配置是否启动成功

启动服务,没有报错就行
systemctl enable \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service
systemctl start \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service
    
ss -tnl

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.7(node) 在node节点安装nova组件

默认centos 7.2的内核是3.10,内核版本要在升级,要不然不能安装内核模块

安装源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

安装稳定版本
yum --enablerepo=elrepo-kernel install kernel-ml -y

查看全部内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
tail /boot/grub2/grubenv     查看默认启动的内核
grub2-set-default 0   设置对应的数字启动内核,0代表5.17版本
grub2-mkconfig -o /boot/grub2/grub.cfg  重新加载启动文件

安装内核模块
yum install bridge-utils  -y

vi /etc/sysctl.conf  编辑文件

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

echo br_netfilter > /etc/modules-load.d/br_netfilter.conf 设置开机自启模块

重启系统,确认内核模块生效
reboot   重启系统
uname -r 确认新的内核版本
lsmod |grep br_netfilter
sysctl -p     查看配置是否生效

在这里插入图片描述

官网环境介绍:openstack部署环境介绍
官网安装node介绍:openstack-node
注意:不要使用阿里yum源、腾讯yum源等其他源,用centos本身自带的源即可。

初始化
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 
systemctl disable NetworkManager.service

配置时区同步
yum install -y chrony
timedatectl set-timezone Asia/Shanghai  设置时区
vi /etc/chrony.conf
#注释这些
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#写对准这个时间服务器
server time1.aliyun.com iburst

systemctl enable chronyd
systemctl start chronyd
chronyc sources -V   查看是否开始校对

vi /etc/hosts  设置hosts
192.168.116.135 master.openstack
192.168.116.136 node1.openstack

hostnamectl set-hostname node1.openstack

安装openstack源
yum install -y centos-release-openstack-train.noarch
yum install python-openstackclient openstack-selinux  wget -y 安装依赖包

配置nova
yum install openstack-nova-compute -y
vi /etc/nova/nova.conf

[DEFAULT]
#设置组件和连接master的rabbitmq的信息
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api]
#设置认证方式
auth_strategy = keystone

[keystone_authtoken]
#设置master的nova的账户信息
www_authenticate_uri = http://master.openstack:5000/
auth_url = http://master.openstack:5000/
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = test1234

[vnc]
#192.168.116.136为node的IP,虚拟机的出口就是整个IP
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = 192.168.116.136
novncproxy_base_url = http://master.openstack:6080/vnc_auto.html

[glance]
#设置连接master的glance组件
api_servers = http://master.openstack:9292

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[placement]
#设置连接master的placement组件信息
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://master.openstack:5000/v3
username = placement
password = test1234

grep "^[a-Z]" /etc/nova/nova.conf  确认配置

启动服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service

在这里插入图片描述
node启动服务后,在master查看node的nova是否注册到了集群
master查看node1已经注册成功

source /etc/profile.d/openstack-admin.sh
openstack compute service list --service nova-compute

在这里插入图片描述

1.8 master配置neutron组件

官网介绍文档:neutron组件

mysql配置:
mysql
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'test1234';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'test1234';
exit

source /etc/profile.d/openstack-admin.sh
创建账户neutron,密码配test1234,创建身份认证
openstack user create --domain default --password-prompt neutron

授权
openstack role add --project service --user neutron admin

新建service
openstack service create --name neutron \
  --description "OpenStack Networking" network

注册3个端口
openstack endpoint create --region RegionOne \
  network public http://master.openstack:9696

openstack endpoint create --region RegionOne \
  network internal http://master.openstack:9696

openstack endpoint create --region RegionOne \
  network admin http://master.openstack:9696

neutron有2种网络模式,一般使用桥接模式
桥接模式文档:neutron桥接模式
自服务模式文档:neutron自服务模式

配置neutron
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

vi /etc/neutron/neutron.conf   修改配置

[DEFAULT]
设置组件模式
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[database]
#设置neutron数据库信息
connection = mysql+pymysql://neutron:[email protected]/neutron

[keystone_authtoken]
#设置上面注册的neutron账户信息
www_authenticate_uri = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = test1234

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

#下面全部都要添加到文件尾部
[nova]
#设置nova的连接信息
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = test1234

确认配置
grep "^[a-Z]" /etc/neutron/neutron.conf

在这里插入图片描述
配置ml2插件的ml2_conf.ini文件
插件配置文件网址:ml2_conf.ini

黑色区域的文件内容要使用到
在这里插入图片描述

用浏览器打开网址,将内容全部复制替换掉老的文件

vi /etc/neutron/plugins/ml2/ml2_conf.ini   删除老的文件,复制上面网址的全部内容

[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
#定义网络名字external,可以自定义,但是名字需要和下面linuxbridge_agent.ini文件保持一致
flat_networks = external

[securitygroup]
#安全组配置
enable_ipset = true

确认配置
grep "^[a-Z\[]" /etc/neutron/plugins/ml2/ml2_conf.ini

在这里插入图片描述
配置ml2插件的linuxbridge_agent.ini文件
插件文档:linuxbridge_agent.ini

黑色部分内容要使用到
在这里插入图片描述

用浏览器打开网址,将内容全部复制替换掉老的文件
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#需要和上面的ml2_conf.ini文件的flat_networks = external名字一样
#eth0是本机网卡名字,使用能连接外网的网卡
physical_interface_mappings = external:eth0

[vxlan]
enable_vxlan = false

[securitygroup]
#安全组配置
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置dhcp_agent.ini文件,这个是使虚拟机自动获取到IP

vi /etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

配置metadata_agent.ini文件,设置nova连接认证密码

vi /etc/neutron/metadata_agent.ini

[DEFAULT]
nova_metadata_host = master.openstack
#test1234这个密码要和下面metadata_proxy_shared_secret一致
metadata_proxy_shared_secret = test1234

配置nova使用neutron组件


vi /etc/nova/nova.conf

[neutron]
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = test1234
service_metadata_proxy = true
#这个需要和上面metadata_agent.ini配的保持一致
metadata_proxy_shared_secret = test1234

启动配置
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

重启nova
systemctl restart openstack-nova-api.service

启动服务
systemctl enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
systemctl start neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service

查看数据生成
mysql -u neutron -p'test1234' -e 'use neutron; show tables;'

在这里插入图片描述

1.9 (node)在node安装neutron组件

官网node安装neutron组件文档:node-neutron

yum install openstack-neutron-linuxbridge ebtables ipset -y
vi /etc/neutron/neutron.conf  修改配置

[DEFAULT]
#设置rabbitmq的账户和密码
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone

[keystone_authtoken]
#连接master的neutron组件,账户信息都是master的neutron信息
www_authenticate_uri = http://master.openstack:5000
auth_url = http://master.openstack:5000
memcached_servers = master.openstack:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = test1234

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

配置ml2插件的linuxbridge_agent.ini文件
插件文档:linuxbridge_agent.ini

黑色部分内容要使用到
在这里插入图片描述

vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings = external:eth0

[vxlan]
enable_vxlan = false

[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置nova

vi /etc/nova/nova.conf

[neutron]
auth_url = http://master.openstack:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = test1234

重启nova服务
systemctl restart openstack-nova-compute.service

启动neutron组件

启动服务
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

1.10 master分配网络

neutron组件分配网络文档:neutron网络分配

openstack network agent list   确认4个组件都是up
openstack network create  --share --external \
  --provider-physical-network external \
  --provider-network-type flat external-net

external  这里的名字必须和上面文件配置的网络一致

openstack subnet create --network external-net \
  --allocation-pool start=192.168.116.50,end=192.168.116.100 \
  --dns-nameserver 114.114.114.114 --gateway 192.168.116.2 \
  --subnet-range 192.168.116.0/24 external-sub

#设置能连接外网的网段,要用真机IP,网关
start=192.168.116.50,end=192.168.116.100
--gateway 192.168.116.2
--subnet-range 192.168.116.0/24

brctl show   查看网卡绑定
ip a         查看真机的IP绑定到新增的网卡了

在这里插入图片描述
在这里插入图片描述

1.11(node)在node修改系统硬件配置,要不然不能创建虚拟机

virsh capabilities |grep pc   查看CPU的选项
vi /etc/nova/nova.conf   修改nova
#hw_machine_type=<None>
#hw_machine_type=<None>
hw_machine_type=x86_64=pc-i440fx-rhel7.2.0
cpu_mode=host-passthrough

重启服务
systemctl restart libvirtd.service openstack-nova-compute.service

在这里插入图片描述

1.12 master创建虚拟机,查看是否能运行

创建虚拟机文档:虚拟机创建

创建虚拟机硬件模板,虚拟机会根据模板的硬件配置而创建

source /etc/profile.d/openstack-admin.sh

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

--id 0     指定编号
--vcpus 1  指定CPU个数
--ram 64   指定使用内存,单位是M
--disk 1   指定使用硬盘大小,单位是G
m1.nano    硬件类型名称

在这里插入图片描述
创建秘钥,这个是用来master远程虚拟机使用的

ssh-keygen -q -N ""  回车就行
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
openstack keypair list

在这里插入图片描述

创建安全组规则

openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
openstack security group list  查看安全组列表

在这里插入图片描述
创建虚拟机

openstack image list      查看镜像名字
openstack network list    查看网络ID
openstack server create --flavor m1.nano --image cirros \
  --nic net-id=3c75db46-e55f-49dd-81c4-8ed1a2a55016 --security-group default \
  --key-name mykey xuniji-vm1

--flavor m1.nano  指定使用的硬件类型名
--image cirros    指定镜像名字
--nic net-id=3c75db46-e55f-49dd-81c4-8ed1a2a55016   指定使用的网络
--security-group default       指定使用的安全组
--key-name mykey xuniji-vm1    指定虚拟机名字

openstack server list
openstack console url show xuniji-vm1 查看网页登录虚拟机方式

如果有对master.openstack进行hosts解析就直接访问网址即可,没有则把master.openstack改成master的IP地址
 url   | http://master.openstack:6080/vnc_auto.html?path=%3Ftoken%3D017353d8-9cca-44c8-b6eb-7537be63423f

在这里插入图片描述
在这里插入图片描述
用IP方式访问虚拟机

http://192.168.116.135:6080/vnc_auto.html?path=%3Ftoken%3D017353d8-9cca-44c8-b6eb-7537be63423f

根据提示输入账户cirros,密码gocubsgo,用sudo提权
ip a                可以到分配了真机的IP段
ping 114.114.114.114  可以通外网

在这里插入图片描述

1.13 master安装网页组件dashboard

网页组件dashboard文档:dashboard

yum install openstack-dashboard -y

vi /etc/openstack-dashboard/local_settings   修改配置

#设置master的IP
OPENSTACK_HOST = "192.168.116.135"

#下面全部true改为false
OPENSTACK_NEUTRON_NETWORK = {
    
    
    'enable_auto_allocated_network': False,
    'enable_distributed_router': False,
    'enable_fip_topology_check': False,
    'enable_ha_router': False,
    'enable_ipv6': False,
    # TODO(amotoki): Drop OPENSTACK_NEUTRON_NETWORK completely from here.
    # enable_quotas has the different default value here.
    'enable_quotas': False,
    'enable_rbac_policy': False,
    'enable_router': False,

#在这里添加访问的路径
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
WEBROOT = '/dashboard'

#修改允许访问的方式
ALLOWED_HOSTS = ['192.168.116.135','master.openstack']

#这里添加内容
#SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'


#CACHES = {
    
    
#    'default': {
    
    
#        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
#        'LOCATION': '127.0.0.1:11211',
#    },
#}
#在这里添加下面
CACHES = {
    
    
    'default': {
    
    
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'master.openstack:11211',
    }
}
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
    
    
    "identity": 3,
    "image": 2,
    "volume": 3,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

#修改时区为上海
# of your entire OpenStack installation, and hopefully be in UTC.
TIME_ZONE = "Asia/Shanghai"

vi /etc/httpd/conf.d/openstack-dashboard.conf   头部添加

WSGIApplicationGroup %{
    
    GLOBAL}

systemctl restart httpd.service memcached.service

访问网页版

http://192.168.116.135/dashboard  这里的/dashboard就是上面的WEBROOT路径

域输入default,账户admin,密码admin

查看账户密码去这个脚本查看
cat /etc/profile.d/openstack-admin.sh 
export OS_USERNAME=admin
export OS_PASSWORD=admin

在这里插入图片描述
在实例可以看到上面创建的虚拟机
在这里插入图片描述
查看创建的硬件类型
在这里插入图片描述

1.14 master和node优化

master和node都修改配置

硬件优化
vi /etc/nova/nova.conf   
[DEFAULT]
#开启虚拟机开机启动
resume_guests_state_on_host_boot=true
#允许超频,也就是如果有1个真实CPU,那么可以创建3*1的CPU
cpu_allocation_ratio=3
#允许内存超出使用,虚拟内存为真机内存的1.5倍
ram_allocation_ratio=1.5
#硬盘超额1倍
disk_allocation_ratio=1.0
#硬盘保留空间,不保留空间全部使用时会卡死
reserved_host_disk_mb=20480
#内存保留空间,不保留空间全部使用时会卡死
reserved_host_memory_mb=4096 
#开启动态调整虚拟机硬件控制
allow_resize_to_same_host=true 
baremetal_enabled_filters=RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ExactRamFilter,ExactDiskFilter,ExactCoreFilter

网络优化
vi /etc/neutron/neutron.conf   文件底部添加下面全部内容
[quotas] 
#自定义的网络配置
quota_network = 10
quota_subnet = 10 
quota_port = 5000 
quota_driver = neutron.db.quota.driver.DbQuotaDriver 
quota_router = 10 
quota_floatingip = 1000 
quota_security_group = 10 
quota_security_group_rule = 100

配置完能重启服务器就重启服务器,不行就全部服务重启一次
控制节点重启服务
systemctl restart \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service

systemctl restart neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service

node节点重启服务
systemctl restart openstack-nova-compute.service
systemctl restart neutron-linuxbridge-agent.service

用命令行动态修改实例,VCPU,内存等方式
查看默认值,默认设置只能创建10个虚拟机,VCPU也只有20个。
在这里插入图片描述

nova quota-defaults    在master查看默认值,对应上面网页看到的值

在这里插入图片描述
nova官网命令行修改文档:nova命令行文档
master配置

通过命令修改配额,这些命令重启也会生效
source /etc/profile.d/openstack-admin.sh         调用变量
nova quota-class-update default --instances 13   设置能创建的虚拟机最大值
nova quota-defaults  可以看到值已经修改完成

在这里插入图片描述
刷新网页也会自动刷新
在这里插入图片描述

2、openstack自定义ubuntu、centos镜像

openstack的镜像使用方式有2种:

  • 官网镜像直接使用方式:
    centos提供qcow2镜像,可以直接使用:centos-qcow2文件
    ubuntu提供img镜像,可以直接使用:ubuntu-img
  • 自定义方式:
    自定义镜像主要是为了openstack创建虚拟机时,可以直接使用这个镜像作为虚拟机的系统模板,不用每次都要重新安装系统,配置一些初始化操作。
    openstack官网制作centos镜像文档:openstack-centos
    openstack官网制作ubuntu镜像文档:openstack-ubuntu

2.1 KVM自定义centos镜像

KVM使用方式文档:kvm和vmesxi使用
centos镜像地址:centos-iso
openstack官网制作centos镜像文档:openstack-centos
下载镜像,一般用Minimal版本即可

mkdir /data
cd /data/
wget https://vault.centos.org/7.2.1511/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso

qemu-img create -f qcow2 /tmp/centos.qcow2 10G   创建磁盘

指定硬件创建虚拟机
virt-install --virt-type kvm --name centos --ram 1024 \
  --disk /tmp/centos.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/data/CentOS-7-x86_64-Minimal-1511.iso

--virt-type kvm           指定创建模式为kvm模式
--name centos --ram 1024  指定虚拟机内存大小
--disk /tmp/centos.qcow2,format=qcow2 指定硬盘存放位置
--network network=default 指定使用默认网络
--os-type=linux --os-variant=centos7.0 指定系统类型
--location=/data/CentOS-7-x86_64-Minimal-1511.iso  指定镜像来源

在KVM桌面
virt-manager  打开控制台,安装好系统
注意:语言一定要选英文,根分区一定要设为标准分区,要不然下面扩容硬盘扩容不了

在这里插入图片描述
语言格式选择英文
在这里插入图片描述
注意:自定义分区时,一定要把根分区的格式选择为标准分区,要不然下面扩容不了
在这里插入图片描述

2.1-1 KVM对虚拟机可选配置

  • 添加网卡:默认是桥接网络,可以不添加网卡
    如果需要一个内网卡,一个外网卡就需要添加网卡
    关闭虚拟机,右键选择这个
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择virtio模式网卡
    在这里插入图片描述
  • 配置好IP,在KVM主机远程虚拟机,自定义镜像配置
    初始化配置:
以下是基本初始化,根据需要设置,可以不设置
cd /etc/yum.repos.d/
yum install -y wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
yum clean all
yum makecache
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2.1-2 KVM对虚拟机必做配置

  • 可选操作做完后,再做这些操作

网卡文件需要配置为DHCP和开启ONBOOT
/etc/sysconfig/network-scripts/
在这里插入图片描述
必须运行配置:
cloud-init文档:cloud-init

#这些工具是为了自动扩容硬盘使用的,比如这个KVM虚拟机创建时只有10G空间,但是openstack创建时有20G,这个工具就会自动根据openstack的配置而扩展空间。openstack虚拟机扩容好硬盘后可以关闭服务,这个操作是一次性的。
yum install acpid cloud-init cloud-utils-growpart  -y
systemctl enable acpid cloud-init

vi /etc/cloud/cloud.cfg    删除文件全部老的内容,只保存下面这些内容
users:
 - default

disable_root: 0
ssh_pwauth:   0

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
resize_rootfs_tmp: /dev
syslog_fix_perms: ~
disable_vmware_customization: false

cloud_init_modules:
 - growpart
 - resizefs

poweroff  关机

KVM对虚拟机操作

yum install libguestfs-tools -y
virt-sysprep -d centos   指定虚拟机名字,清除MAC地址,要不然每台openstack创建时MAC地址会冲突
virsh undefine centos    删除虚拟机,但是不删除虚拟机硬盘文件

2.2 KVM自定义ubuntu镜像

KVM使用方式文档:kvm和vmesxi使用
乌班图镜像地址:ubuntu-mini-iso
openstack官网制作ubuntu镜像文档:openstack-ubuntu
下载镜像

mkdir /data
cd /data
wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso

qemu-img create -f qcow2 /tmp/ubuntu-18.04.qcow2 10G  创建硬盘
创建虚拟机
virt-install --virt-type kvm --name ubuntu-18.04  --ram 1024 \
  --cdrom=/data/mini.iso \
  --disk path=/tmp/ubuntu-18.04.qcow2 \
  --network bridge=virbr0 \
  --graphics vnc,listen=0.0.0.0 --noautoconsole

在KVM桌面运行
virt-manager  打开控制台,安装好系统
注意:语言一定要选英文,要不然下面扩容硬盘扩容不了

语言选择英文
在这里插入图片描述
选择主分区,分区只要根分区
在这里插入图片描述
在这里插入图片描述

2.2-1 可选配置操作

初始化配置

vi /etc/apt/sources.list   删除文件老的内容,改为下面

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

apt update

vi /etc/ssh/sshd_config   开启root账户远程
PermitRootLogin yes
PasswordAuthentication yes

systemctl restart sshd

2.2-2 必选配置操作

可选操作配置完成后,进行操作

apt install cloud-init -y
systemctl enable cloud-init
dpkg-reconfigure cloud-init    空格选择,只保留Ec2开头这个源即可

vi /etc/cloud/cloud.cfg

users:
   - default
disable_root: false
cloud_init_modules:
 - growpart
 - resizefs

/sbin/shutdown -h now   关机

在这里插入图片描述

3、上传镜像到openstack,用网页版创建虚拟机

3.1 上传镜像

在KVM将文件传送到openstack-master的镜像目录

scp /tmp/centos.qcow2 [email protected]:/var/lib/glance/images/

openstack有2种上传镜像方式:

3.1-1 第一种 在master用命令行上传镜像

cd /var/lib/glance/images/
glance image-create --name "CentOS-7.2-Minimal-template" \
  --file centos.qcow2 \
  --disk-format qcow2 --container-format bare \
  --visibility public
  
glance image-list   查看镜像列表

在这里插入图片描述

3.3-2 第二种 在master用网页方式上传镜像

KVM先用工具把/tmp/centos.qcow2 镜像放到能访问网页的主机上
打开网页,选择创建
在这里插入图片描述
在浏览找到自己存放镜像的目录
选择镜像格式为QCOW2,最小磁盘和最低内存使用KVM虚拟机创建时的配置
在这里插入图片描述
在这里插入图片描述

3.2 创建虚拟机硬件类型

在网页上选择创建实例类型
在这里插入图片描述
设置硬件
在这里插入图片描述
在这里插入图片描述

3.3 创建虚拟机

在项目里面选择创建实例
在这里插入图片描述
输入名字和选择域
在这里插入图片描述
选择安装的镜像源
在这里插入图片描述
在这里插入图片描述
选择实例类型,也就是虚拟机的硬件类型
在这里插入图片描述
在这里插入图片描述
有多个网络就选择多个网路,没有默认值就行,然后创建实例
在这里插入图片描述
确认状态为运行,表示虚拟机创建成功
在这里插入图片描述
查看URL访问系统
有配置hosts解析的直接点这里就可以看到
在这里插入图片描述

在这里插入图片描述
没有配hosts解析需要去master查看url,将域名替换为IP地址
master运行:

查看虚拟机的网页控制台
openstack console url show centos-7-1

将master.openstack改为master的IP地址
http://master.openstack:6080/vnc_auto.html?path=%3Ftoken%3D45df0978-ea2f-43ac-ba91-321edf46d6e0

在这里插入图片描述
查看分区是否扩容成功
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/DLWH_HWLD/article/details/122177179