简单的利用鲲鹏服务器搭建OpenStack平台实践(下)

举报
Jack20 发表于 2021/01/14 14:54:28 2021/01/14
【摘要】 在上一篇中(https://bbs.huaweicloud.com/blogs/237348),分别介绍了:4 安装Nova计算服务(控制节点)5 安装Nova计算服务(计算节点)6 安装Neutron网络服务(控制节点)>>点我查看利用鲲鹏服务器搭建OpenStack平台实践(中)<<接下来我们继续介绍最后的几点也是最重要的几点:7 安装Horizon服务组件(控制节点)7.1 安装das...

在上一篇中(https://bbs.huaweicloud.com/blogs/237348),分别介绍了:

4 安装Nova计算服务(控制节点)

5 安装Nova计算服务(计算节点)

6 安装Neutron网络服务(控制节点)

>>点我查看利用鲲鹏服务器搭建OpenStack平台实践(中)<<


接下来我们继续介绍最后的几点也是最重要的几点:


7 安装Horizon服务组件(控制节点)

7.1 安装dashboard软件包

yum --enablerepo=centos-openstack-stein,epel install openstack-dashboard -y --nogpgcheck

7.2 修改配置文件

(1)修改配置文件/etc/openstack-dashboard/local_settings

vim /etc/openstack-dashboard/local_settings
ALLOWED_HOSTS = ['*', ]
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'jack20_controller:11211',
    },
}
OPENSTACK_HOST = "jack20_controller"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': True,
    'enable_quotas': True,
    'enable_ipv6': True,
    'enable_distributed_router': True,
    'enable_ha_router': True,
    'enable_fip_topology_check': True,
    'enable_firewall': True,
    'enable_vpn': True,
    'enable_lb': True,
}
TIME_ZONE = "Asia/Shanghai"
POLICY_FILES_PATH = '/etc/openstack-dashboard'
POLICY_FILES = {
    'neutron-fwaas': '/etc/neutron-fwaas-policy.json'
}

配置选项:

配置dashboard运行在192.168.1.81上(192.168.1.81为OS主机名)

配置允许登陆dashboard的主机

配置memcached存储服务

启用第3版认证API

启用对域的支持

配置API版本

通过仪表盘创建用户时的默认域配置为 default

通过仪表盘创建的用户默认角色配置为 user

如果您选择网络参数1,禁用支持3层网络服务:

可以选择性地配置时区,不能用CST否则无法启动httpd服务

(2)新增以下内容/etc/httpd/conf.d/openstack-dashboard.conf

vim /etc/httpd/conf.d/openstack-dashboard.conf
WSGIApplicationGroup %{GLOBAL}

(3)重启服务

systemctl restart httpd.service memcached.service

7.3 部署FwaaS、VPNaaS及LBaaS的面板

(1)下载并配置面板

cd /
git clone https://opendev.org/openstack/neutron-fwaas-dashboard -b stable/stein
cd /neutron-fwaas-dashboard
python setup.py install
cp /neutron-fwaas-dashboard/neutron_fwaas_dashboard/enabled/_7*_*.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled
cp /neutron-fwaas-dashboard/etc/neutron-fwaas-policy.json /etc/openstack-dashboard/
cd /
git clone https://opendev.org/openstack/neutron-vpnaas-dashboard -b stable/stein
cd /neutron-vpnaas-dashboard
python setup.py install
cp /neutron-vpnaas-dashboard/neutron_vpnaas_dashboard/enabled/_7*_*.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled
cd /
git clone https://git.openstack.org/openstack/neutron-lbaas-dashboard -b stable/stein
cd /neutron-lbaas-dashboard
python setup.py install
cp /neutron-lbaas-dashboard/neutron_lbaas_dashboard/enabled/_1*_*.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/
cd /usr/share/openstack-dashboard
python manage.py compilemessages
DJANGO_SETTINGS_MODULE=openstack_dashboard.settings python manage.py collectstatic --noinput
DJANGO_SETTINGS_MODULE=openstack_dashboard.settings python manage.py compress --force

(2)重启各个服务

systemctl restart neutron-server httpd.service memcached.service

(3)访问测试

在浏览器中输入下面的地址:用户名是admin,密码是123456,域名用default

http://192.168.0.76:80/dashboard

# 浏览器页面如下:

2.png


# 登录后显示这样一个摘要信息:

2.png

# 新安装的默认里面基本是空的,需要后续手动添加扩充


 

8 安装Cinder存储服务组件(控制节点)

8.1 在控制节点安装cinder存储服务

(1)创建cinder数据库

# 创建相关数据库,授权访问用户

mysql -u root -p123456
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
flush privileges;
show databases;
select user,host from mysql.user;
exit

image.png

(2)在keystone上面注册cinder服务(创建服务证书)

# 在keystone上创建cinder用户

cd /server/tools
source admin-openrc.sh
openstack user create --domain default --password=cinder cinder
openstack user list

在keystone上将cinder用户配置为admin角色并添加进service项目,以下命令无输出

openstack role add --project service --user cinder admin

创建cinder服务的实体

openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
  openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
  openstack service list

创建cinder服务的API端点(endpoint)

openstack endpoint create --region RegionOne volumev2 public http://jack20_controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://jack20_controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://jack20_controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 public http://jack20_controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://jack20_controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://jack20_controller:8776/v3/%\(project_id\)s
openstack endpoint list

(3)安装cinder相关软件包

yum --enablerepo=centos-openstack-stein,epel install openstack-cinder -y –nogpgcheck

(4)快速修改cinder配置

openstack-config --set  /etc/cinder/cinder.conf database connection  mysql+pymysql://cinder:cinder@jack20_controller/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url  rabbit://openstack:openstack@jack20_controller
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_uri  http://jack20_controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_url  http://jack20_controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken memcached_servers jack20_controller:11211
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_type  password
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken user_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_name  service
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken username  cinder
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken password  cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT my_ip 192.168.0.76
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/nova/tmp
openstack-config --set  /etc/cinder/cinder.conf DEFAULT log_dir /var/log/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT state_path /var/lib/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT enable_v3_api True

检查生效的cinder配置

egrep -v "^#|^$" /etc/cinder/cinder.conf
grep '^[a-z]' /etc/cinder/cinder.conf


image.png

(5)同步cinder数据库

# 有36张表(如有提示,请忽略)

su -s /bin/sh -c "cinder-manage db sync" cinder

# 验证数据库

mysql -h192.168.0.76 -ucinder -pcinder -e "use cinder;show tables;"
mysql -h192.168.0.76 -ucinder -pcinder -e "use cinder;show tables;"|wc -l


2.png


(6)修改nova配置文件

# 配置nova调用cinder服务

openstack-config --set /etc/nova/nova.conf cinder os_region_name RegionOne

检查生效的nova配置

grep '^[a-z]' /etc/nova/nova.conf |grep os_region_name

image.png

(7)重启nova-api服务

systemctl restart openstack-nova-api.service
systemctl status openstack-nova-api.service

image.png

(8)启动cinder存储服务

# 需要启动2个服务

systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl list-unit-files |grep openstack-cinder |grep enabled

image.png

# 至此,控制端的cinder服务安装完毕,在dashboard上面可以看到项目目录中多了一个卷服务

8.2 在计算节点服务器安装cinder存储服务

# 存储节点建议单独部署服务器(最好是物理机),测试时也可以部署在控制节点或者计算节点。在本文是在计算节点使用LVM逻辑卷提供服务,需要提供一块空的磁盘用以创建LVM逻辑卷,我在开始配置计算节点时就已经增添了一块100GB的磁盘。

(1)安装LVM相关软件包

yum --enablerepo=centos-openstack-stein,epel install lvm2 device-mapper-persistent-data -y --nogpgcheck

(2)启动LVM的metadata服务并配置开机自启动

systemctl start lvm2-lvmetad.service
systemctl status lvm2-lvmetad.service
systemctl enable lvm2-lvmetad.service
systemctl list-unit-files |grep lvm2-lvmetad |grep enabled

image.png

(3)创建LVM逻辑卷(在运行以下命令时,请确保计算节点已额外添加100GB的磁盘)

image.png

# 检查磁盘状态

fdisk -l

image.png

# 创建LVM 物理卷 /dev/sdb

pvcreate /dev/sdb

# 创建 LVM 卷组 cinder-volumes,块存储服务会在这个卷组中创建逻辑卷

vgcreate cinder-volumes /dev/sdb

(4)配置过滤器,防止系统出错

# 默认只会有openstack实例访问块存储卷组,不过,底层的操作系统也会管理这些设备并尝试将逻辑卷与系统关联。

# 默认情况下LVM卷扫描工具会扫描整个/dev目录,查找所有包含lvm卷的块存储设备。如果其他项目在某个磁盘设备sda,sdc等上使用了lvm卷,那么扫描工具检测到这些卷时会尝试缓存这些lvm卷,可能导致底层操作系统或者其他服务无法正常调用他们的lvm卷组,从而产生各种问题,需要手动配置LVM,让LVM卷扫描工具只扫描包含"cinder-volume"卷组的设备/dev/sdb,我这边磁盘分区都是格式化的手工分区,目前不存在这个问题,以下是配置演示

vim /etc/lvm/lvm.conf
devices {
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
}

# 配置规则:

# 每个过滤器组中的元素都以a开头accept接受,或以 r 开头reject拒绝,后面连接设备名称的正则表达式规则。

# 过滤器组必须以"r/.*/"结束,过滤所有保留设备。

# 可以使用命令:vgs -vvvv来测试过滤器。

注意:

# 如果存储节点的操作系统磁盘/dev/sda使用的是LVM卷组,也需要将该设备添加到过滤器中,例如:filter = [ "a/sda/", "a/sdb/", "r/.*/"]

# 如果计算节点的操作系统磁盘/dev/sda使用的是LVM卷组,也需要修改这些节点的/etc/lvm/lvm.conf,在过滤器中增加该类型的磁盘设备,例如:filter = [ "a/sda/", "r/.*/"]

(5)在计算节点安装配置cinder组件

yum --enablerepo=centos-openstack-stein,epel install openstack-cinder targetcli python-keystone -y --nogpgcheck

(6)在计算节点快速修改cinder配置

openstack-config --set  /etc/cinder/cinder.conf database connection  mysql+pymysql://cinder:cinder@jack20_controller/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url  rabbit://openstack:openstack@jack20_controller
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken www_authenticate_uri  http://jack20_controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_url  http://jack20_controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken memcached_servers  jack20_controller:11211
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_type  password
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken user_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_name  service
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken username  cinder
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken password  cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT my_ip 10.0.0.31
openstack-config --set  /etc/cinder/cinder.conf lvm volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver
openstack-config --set  /etc/cinder/cinder.conf lvm volume_group cinder-volumes
openstack-config --set  /etc/cinder/cinder.conf lvm target_protocol  iscsi
openstack-config --set  /etc/cinder/cinder.conf lvm target_helper  lioadm
openstack-config --set  /etc/cinder/cinder.conf DEFAULT enabled_backends  lvm
openstack-config --set  /etc/cinder/cinder.conf DEFAULT glance_api_servers  http://jack20_controller:9292
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp
openstack-config --set  /etc/cinder/cinder.conf DEFAULT log_dir /var/log/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT state_path /var/lib/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT enable_v3_api True

# 如果计算节点是双网卡,选项my_ip需要配置计算节点的管理IP,否则配置本机IP

# 检查生效的cinder配置

egrep -v "^#|^$" /etc/cinder/cinder.conf
grep '^[a-z]' /etc/cinder/cinder.conf

image.png

(7)在计算节点启动cinder服务并配置开机自启动

# 需要启动2个服务

systemctl start openstack-cinder-volume.service target.service
systemctl status openstack-cinder-volume.service target.service
systemctl enable openstack-cinder-volume.service target.service
systemctl list-unit-files |grep openstack-cinder |grep enabled
systemctl list-unit-files |grep target.service |grep enabled

image.png

# 至此,在计算节点安装cinder服务就完成了



9 部署VPC以测试OpenStack

9.1登录进行基本配置

(1)获取管理员变量

cd /server/tools
echo "export OS_VOLUME_API_VERSION=3" >> admin-openrc.sh
source admin-openrc.sh

(2)登录后创建实例类型

2.jpg

2.jpg

cd /server/tools
source admin-openrc.sh
openstack security group create test
openstack security group rule create --ingress --ethertype IPv4 --protocol icmp test
openstack security group rule create --egress --ethertype IPv4 --protocol icmp test
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 1:65535 --remote-ip 0.0.0.0/0 test
openstack security group rule create --proto tcp --dst-port 22 test

(3)创建秘钥对

2.jpg

选择SSH秘钥创建并保存


到这里差不都也就结束了,大家感兴趣的可以自己研究研究创建私有网络、创建实例、SDN虚拟路由器等等都好有意思~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。