企业运维之 openstack 的私有网络以及图形化配置

Posted 123坤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业运维之 openstack 的私有网络以及图形化配置相关的知识,希望对你有一定的参考价值。

在上一篇的基础上,来继续完善 openstack 的相关配置。先将控制节点启动,然后在启动计算节点。
调用管理员的权限,查看相关组件的状态。

[root@controller ~]# source admin-openrc 
[root@controller ~]# openstack-status

1. 私有网络

私有网络在共有网络的基础上多了layer-3服务,支持实例连接到私有网络。demo或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网.

典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网 最大传输单元 (MTU) 1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。

  1. 控制节点
    安装组件
yum install openstack-neutron openstack-neutron-ml2 \\
  openstack-neutron-linuxbridge ebtables

配置服务组件
在前面共有网络的基础上增加一些配置即可;

[root@controller ~]# vim /etc/neutron/neutron.conf 
 1 [DEFAULT]

 3 service_plugins = router		#路由服务和重叠的IP地址
 4 allow_overlapping_ips = True

[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
 99 [ml2]
100 type_drivers = flat,vlan,vxlan	#启用flat,VLAN以及VXLAN网络
101 tenant_network_types = vxlan	#启用VXLAN私有网络
102 mechanism_drivers = linuxbridge,l2population	#启用Linuxbridge和layer-2机制
205 [ml2_type_vxlan]
206 vni_ranges = 1:1000	#为私有网络配置VXLAN网络识别的网络范围


[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
#启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population
168 [vxlan]
169 enable_vxlan = True
170 local_ip = 172.25.25.1
171 l2_population = True

[root@controller ~]# vim /etc/neutron/l3_agent.ini
#配置Linuxbridge接口驱动和外部网络网桥

  1 [DEFAULT]
  2 interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  3 external_network_bridge =

重启修改过的服务,

[root@controller ~]# systemctl restart neutron-server.service \\
>   neutron-linuxbridge-agent.service
[root@controller ~]# systemctl enable --now neutron-l3-agent.service

[root@controller ~]# neutron agent-list	#查看组件信息
+----------+------------+----------+-------------------+-------+----------------+---------------+
| id       | agent_type | host     | availability_zone | alive | admin_state_up | binary        |
+----------+------------+----------+-------------------+-------+----------------+---------------+
| b111bed6 | Metadata   | controll |                   | :-)   | True           | neutron-      |
| -18f0-48 | agent      | er       |                   |       |                | metadata-     |
| 5f-9168- |            |          |                   |       |                | agent         |
| 9734251e |            |          |                   |       |                |               |
| 82a8     |            |          |                   |       |                |               |
| c642e952 | Linux      | computer |                   | :-)   | True           | neutron-      |
| -f88d-42 | bridge     | 1        |                   |       |                | linuxbridge-  |
| 92-bbe6- | agent      |          |                   |       |                | agent         |
| 7cf124dd |            |          |                   |       |                |               |
| 44ca     |            |          |                   |       |                |               |
| cac3fd3d | L3 agent   | controll | nova              | :-)   | True           | neutron-l3-ag |
| -1f4b-45 |            | er       |                   |       |                | ent           |
| 54-96a6- |            |          |                   |       |                |               |
| 6e39ae25 |            |          |                   |       |                |               |
| 251b     |            |          |                   |       |                |               |
| d71c96c1 | DHCP agent | controll | nova              | :-)   | True           | neutron-dhcp- |
| -1b1b-   |            | er       |                   |       |                | agent         |
| 4b9f-    |            |          |                   |       |                |               |
| a76a-a2a |            |          |                   |       |                |               |
| 077f111c |            |          |                   |       |                |               |
| 2        |            |          |                   |       |                |               |
| f59b2f02 | Linux      | controll |                   | :-)   | True           | neutron-      |
| -c047    | bridge     | er       |                   |       |                | linuxbridge-  |
| -4c3f-ae | agent      |          |                   |       |                | agent         |
| e4-374d9 |            |          |                   |       |                |               |
| a81f6da  |            |          |                   |       |                |               |
+----------+------------+----------+-------------------+-------+----------------+---------------+
  1. 计算节点
    在之前共有网络的基础上来修改配置信息即可;
[root@computer1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

168 [vxlan]
169 enable_vxlan = True
170 local_ip = 172.25.25.2
171 l2_population = True

[root@computer1 ~]# systemctl restart neutron-linuxbridge-agent.service

此时想要用图像的方式来配置,还不可用;需要将dashboard3层网络打开;

[root@controller ~]# vim /etc/openstack-dashboard/local_settings 

275 OPENSTACK_NEUTRON_NETWORK = {
276     'enable_router': True,
277     'enable_quotas': True,
278     'enable_ipv6': True,
279     'enable_distributed_router': True,
280     'enable_ha_router': True,
281     'enable_lb': True,
282     'enable_firewall': True,
283     'enable_vpn': True,
284     'enable_fip_topology_check': True,

[root@controller ~]# systemctl restart httpd.service memcached.service

2. 图形化配置虚拟机

用来模拟的主机没有共有的IP,在登陆图形化界面admin用户时,选择外部网络。将其视作共有IP。

1. 创建私有网络和主机
然后切换到demo用户来创建私有网络:

定义网络名称;勾选创建子网,不对外可见;


设置子网名称以及网络地址;

激活dhcp 让其自动分配IP ;设定DNS ;

然后启动之前的云主机;然后再创建一个私有网络的云主机;

此处可以下载软件包来查看云主机:

[root@computer1 ~]# yum install -y libvirt-client
[root@computer1 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     instance-00000002              running
 2     instance-00000003              running
  1. 路由器:
    此时是内网一台主机,外网一台主机;彼此是不能通信的,给其加路由让其可以通信;

创建完成之后,此时路由器已经和外部网络连接在一起,下来只需要将其和内部网络接通即可;


此时内网和外网便已经连通。此时内部网络主机打开控制台,可以ping通外部网络IP。

此时是一个SNAT ,也就是内外网络可以访问外部网络。但是外部网络不可以访问内部网络。

此时需要给内部网络做合法认证,此处直接申请一个外部IP,此时外网便可以访问内部网络;




此时便完成了私有网络和共有网络的配置,并且可以让其之间互相通信。

3. 封装镜像

参考官网文档:https://docs.openstack.org/image-guide/centos-image.html

此处直接用图形化的虚拟机管理用具来封装镜像:
选择最小化的安装;设置需要的语言,时区等相应的信息。

注:此处需要根据文档中的内容。

安装完成之后,此时在开机时将selinux禁用;开启之后,编辑selinux文件,将其改为disabled;然后禁用火墙。为其添加IP;然后可以远程连接设置。

连接之后先配置软件源,然后下载相应的配件。

[westos@westos Desktop]$ ssh root@172.25.25.200
[root@localhost yum.repos.d]# vi dvd.repo
[root@localhost yum.repos.d]# cat dvd.repo
[dvd]
name=rhel7.6
baseurl=http://172.25.25.250/rhel7
gpgcheck=0

然后根据文档信息,安装需要的信息;

[root@localhost yum.repos.d]# yum install acpid -y
[root@localhost yum.repos.d]# systemctl enable acpid

此处有一些官方源里面没有,需要自己去下载,然后放在软件源中;

[root@localhost yum.repos.d]# cat cloud-init.repo 
[cloud]
name=cloud-init
baseurl=http://172.25.25.250/cloud-init
gpgcheck=0
[root@localhost yum.repos.d]# yum install cloud-init -y
[root@localhost yum.repos.d]# yum install cloud-utils-growpart -y #扩展根分区所需要
[root@localhost yum.repos.d]# cd /etc/cloud/
[root@localhost cloud]# ls		##配置信息
cloud.cfg  cloud.cfg.d  templates
[root@localhost cloud]# echo "NOZEROCONF=yes" >> /etc/sysconfig/network	#禁用0配置网络
[root@localhost cloud]# vi /boot/grub2/grub.cfg 
#让云主机将日志传到 console中
    100         linux16 /boot/vmlinuz-3.10.0-957.el7.x86_64 root=UUID=99b21c64-2bc0-4dbc-a5d9-        b6782663eb23 ro rhgb quiet LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200n8 
[root@localhost cloud]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp	#激活dhcp
ONBOOT=yes
DEVICE=eth0
[root@localhost cloud]# poweroff

最后关机,关机之后就不要在启动,然后对封装的镜像进行清理;并压缩;此时镜像已经封装完成。

[root@westos images]# virt-sysprep -d small
[root@westos images]# du -sh small.qcow2 
8.1G	small.qcow2
[root@westos images]# virt-sparsify --compress small.qcow2 /var/www/html/small.qcow2
[root@westos html]# ll small.qcow2 
-rw-r--r--. 1 root root 545993216 Jul 24 15:27 small.qcow2
[root@westos html]# du -sh small.qcow2 
521M	small.qcow2

此时封装完毕,只须将其上传至云平台上即可使用;

4. 上传镜像

用管理员的身份来登陆上传镜像;

然后在创建一个云主机类型。然后来和该镜像结合。

此时再次切换到demo来将镜像和云主机结合起来;
从控制台进去之后,可以看到主机信息。

5. 块存储

参考官网文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder.html

块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。

典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器可以运行在控制节点、计算节点或单独的存储节点。

此处在开一台虚拟机,来做为存储;添加虚拟磁盘10G。

解析,时间同步,软件仓库;

[root@block1 ~]# vim /etc/hosts
[root@block1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.25.250	 foundation39.ilt.example.com
172.25.25.1	controller	
172.25.25.2	compute1
172.25.25.3	block1
[root@block1 ~]# yum install -y chrony
[root@block1 ~]# vim /etc/chrony.conf 
#同步时间
[root@block1 ~]# systemctl enable --now chronyd
[root@block1 yum.repos.d]# ls
dvd.repo  openstack.repo  redhat.repo
  1. 控制节点:
  1. 先决条件
    在你安装和配置块存储服务之前,你必须创建数据库、服务证书和API端点.
[root@controller ~]# mysql -pwestos

MariaDB [(none)]> CREATE DATABASE cinder;
#创建 cinder 数据库
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \\
    ->   IDENTIFIED BY 'cinder';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'    IDENTIFIED BY 'cinder'; 
#允许 cinder 数据库合适的访问权限

用超级用户创建服务证书:

[root@controller ~]# openstack user create --domain default --password cinder cinder
#创建一个 cinder 用户
[root@controller ~]# openstack role add --project service --user cinder admin
#添加 admin 角色到 cinder 用户上
[root@controller ~]# openstack service create --name cinder \\
>   --description "OpenStack Block Storage" volume
[root@controller ~]# openstack service create --name cinderv2 \\
>   --description "OpenStack Block Storage" volumev2
#创建 cinder 和 cinderv2 服务实体

创建块设备存储服务的 API 入口点:

[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volume public http://controller:8776/v1/%\\(tenant_id\\)s
[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volume internal http://controller:8776/v1/%\\(tenant_id\\)s
[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volume admin http://controller:8776/v1/%\\(tenant_id\\)s
[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volumev2 public http://controller:8776/v2/%\\(tenant_id\\)s
[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volumev2 internal http://controller:8776/v2/%\\(tenant_id\\)s
[root@controller ~]# openstack endpoint create --region RegionOne \\
>   volumev2 admin http://controller:8776/v2/%\\(tenant_id\\)s

2)安装并配置组件

[root@controller ~]# yum install openstack-cinder -y
[root@controller ~]# vim /etc/cinder/cinder.conf

[database]	#配置数据库访问
connection = mysql+pymysql://cinder:cinder@controller/cinder

[DEFAULT]		#配置 “RabbitMQ” 消息队列访问
rpc_backend = rabbit

[oslo_messaging_rabbit]	#配置 “RabbitMQ” 消息队列访问
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack

#在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder

#在 [DEFAULT] 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
my_ip = 172.25.25.1[oslo_concurrency] 部分,配置锁路径
lock_path = /var/lib/cinder/tmp

[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
#初始化块设备服务的数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| cinder             |
| glance             |
| information_schema |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| performance_schema |
+--------------------+
9 rows in set (0.00 sec)
  1. 配置计算节点以使用块设备存储
[root@controller ~]# vim /etc/nova/nova.conf 

[cinder]
os_region_name = RegionOne
  1. 完成安装
[root@controller ~]# systemctl restart o

以上是关于企业运维之 openstack 的私有网络以及图形化配置的主要内容,如果未能解决你的问题,请参考以下文章

企业运维之 openstack 的介绍以及组件搭建

企业运维之 zabbix 监控部署--监控主机

企业运维之 zabbix 监控部署--监控主机

企业运维之 ELK日志分析平台(Elasticsearch)

企业运维之 ELK日志分析平台(Elasticsearch)

企业运维之 CDN 内容分发网络