企业运维之 openstack 的私有网络以及图形化配置
Posted 123坤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业运维之 openstack 的私有网络以及图形化配置相关的知识,希望对你有一定的参考价值。
企业运维之 openstack 的私有网络以及图形化
在上一篇的基础上,来继续完善 openstack 的相关配置。先将控制节点启动,然后在启动计算节点。
调用管理员的权限,查看相关组件的状态。
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack-status
1. 私有网络
私有网络在共有网络的基础上多了layer-3
服务,支持实例连接到私有网络。demo
或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网.
典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网 最大传输单元 (MTU) 1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。
- 控制节点
安装组件
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 | | | | | | |
+----------+------------+----------+-------------------+-------+----------------+---------------+
- 计算节点
在之前共有网络的基础上来修改配置信息即可;
[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
此时想要用图像的方式来配置,还不可用;需要将dashboard
3层网络打开;
[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
- 路由器:
此时是内网一台主机,外网一台主机;彼此是不能通信的,给其加路由让其可以通信;
创建完成之后,此时路由器已经和外部网络连接在一起,下来只需要将其和内部网络接通即可;
此时内网和外网便已经连通。此时内部网络主机打开控制台,可以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
- 控制节点:
- 先决条件
在你安装和配置块存储服务之前,你必须创建数据库、服务证书和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)
- 配置计算节点以使用块设备存储
[root@controller ~]# vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
- 完成安装
[root@controller ~]# systemctl restart o以上是关于企业运维之 openstack 的私有网络以及图形化配置的主要内容,如果未能解决你的问题,请参考以下文章
企业运维之 ELK日志分析平台(Elasticsearch)