企业运维之 openstack 的私有网络以及图形化
在上一篇的基础上,来继续完善 openstack 的相关配置。先将控制节点启动,然后在启动计算节点。 调用管理员的权限,查看相关组件的状态。
[root@controller ~]
[root@controller ~]
1. 私有网络
私有网络在共有网络的基础上多了layer-3 服务,支持实例连接到私有网络。demo 或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网.
典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网 最大传输单元 (MTU) 1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。
- 控制节点
安装组件
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
配置服务组件 在前面共有网络的基础上增加一些配置即可;
[root@controller ~]
1 [DEFAULT]
3 service_plugins = router
4 allow_overlapping_ips = True
[root@controller ~]
99 [ml2]
100 type_drivers = flat,vlan,vxlan
101 tenant_network_types = vxlan
102 mechanism_drivers = linuxbridge,l2population
205 [ml2_type_vxlan]
206 vni_ranges = 1:1000
[root@controller ~]
168 [vxlan]
169 enable_vxlan = True
170 local_ip = 172.25.25.1
171 l2_population = True
[root@controller ~]
1 [DEFAULT]
2 interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
3 external_network_bridge =
重启修改过的服务,
[root@controller ~]
> neutron-linuxbridge-agent.service
[root@controller ~]
[root@controller ~]
+----------+------------+----------+-------------------+-------+----------------+---------------+
| 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 ~]
168 [vxlan]
169 enable_vxlan = True
170 local_ip = 172.25.25.2
171 l2_population = True
[root@computer1 ~]
此时想要用图像的方式来配置,还不可用;需要将dashboard 3层网络打开;
[root@controller ~]
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 ~]
2. 图形化配置虚拟机
用来模拟的主机没有共有的IP,在登陆图形化界面admin用户时,选择外部网络。将其视作共有IP。
1. 创建私有网络和主机 然后切换到demo用户来创建私有网络:
定义网络名称;勾选创建子网,不对外可见;
设置子网名称以及网络地址;
激活dhcp 让其自动分配IP ;设定DNS ;
然后启动之前的云主机;然后再创建一个私有网络的云主机;
此处可以下载软件包来查看云主机:
[root@computer1 ~]
[root@computer1 ~]
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]
[root@localhost yum.repos.d]
[dvd]
name=rhel7.6
baseurl=http:
gpgcheck=0
然后根据文档信息,安装需要的信息;
[root@localhost yum.repos.d]
[root@localhost yum.repos.d]
此处有一些官方源里面没有,需要自己去下载,然后放在软件源中;
[root@localhost yum.repos.d]
[cloud]
name=cloud-init
baseurl=http:
gpgcheck=0
[root@localhost yum.repos.d]
[root@localhost yum.repos.d]
[root@localhost yum.repos.d]
[root@localhost cloud]
cloud.cfg cloud.cfg.d templates
[root@localhost cloud]
[root@localhost cloud]
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]
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=eth0
[root@localhost cloud]
最后关机,关机之后就不要在启动,然后对封装的镜像进行清理;并压缩;此时镜像已经封装完成。
[root@westos images]
[root@westos images]
8.1G small.qcow2
[root@westos images]
[root@westos html]
-rw-r--r--. 1 root root 545993216 Jul 24 15:27 small.qcow2
[root@westos html]
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 ~]
[root@block1 ~]
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 ~]
[root@block1 ~]
[root@block1 ~]
[root@block1 yum.repos.d]
dvd.repo openstack.repo redhat.repo
- 控制节点:
- 先决条件
在你安装和配置块存储服务之前,你必须创建数据库、服务证书和API端点.
[root@controller ~]
MariaDB [(none)]> CREATE DATABASE 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';
用超级用户创建服务证书:
[root@controller ~]
[root@controller ~]
[root@controller ~]
> --description "OpenStack Block Storage" volume
[root@controller ~]
> --description "OpenStack Block Storage" volumev2
创建块设备存储服务的 API 入口点:
[root@controller ~]
> volume public http:
[root@controller ~]
> volume internal http:
[root@controller ~]
> volume admin http:
[root@controller ~]
> volumev2 public http:
[root@controller ~]
> volumev2 internal http:
[root@controller ~]
> volumev2 admin http:
2)安装并配置组件
[root@controller ~]
[root@controller ~]
[database]
connection = mysql+pymysql:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http:
auth_url = http:
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
my_ip = 172.25.25.1
在 [oslo_concurrency] 部分,配置锁路径
lock_path = /var/lib/cinder/tmp
[root@controller ~]
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 ~]
[cinder]
os_region_name = RegionOne
- 完成安装
[root@controller ~]
[root@controller ~]
- 存储节点
1)先决条件
[root@block1 ~]
[root@block1 ~]
[root@block1 ~]
[root@block1 ~]
[root@block1 ~]
143 filter = [ "a/sdb/", "a/vdb/", "r/.*/"]
2)安装并配置组件
[root@block1 ~]
[root@block1 ~]
[database]
connection = mysql+pymysql:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http:
auth_url = http:
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
my_ip = 172.25.25.3
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
enabled_backends = lvm
glance_api_servers = http:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
3)完成安装
[root@block1 ~]
- 验证
在控制结点上,获得 admin 凭证来获取只有管理员能执行的命令的访问权限;列出服务组件以验证是否每个进程都成功启动。
[root@controller ~]
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller | nova | enabled | up | 2021-07-24T10:14:26.000000 | - |
| cinder-volume | block1@lvm | nova | enabled | up | 2021-07-24T10:14:33.000000 | - |
+------------------+------------+------+---------+-------+----------------------------+-----------------+
此时再次登陆网页,会看到堕落一个卷;然后可以创建云硬盘:
将新建的硬盘加到云主机上;
然后打开控制台查看信息:
此时当挂载的外部设备中有数据时,先将设备从云主机中卸载,然后再分离云硬盘,此时便可以回收掉云主机,但是数据还是会保留。当云主机再次上线时,再将其挂载上去。
此处还有扩展硬盘等操作。此处扩展为5G,然后再将其挂载上去;查看大小,此时进入数据目录,此时可以看到数据已经可以显示;
此时数据恢复,但是之前挂载的大小还是位2G;需要扩展;
6. kolla-ansible
由于接下来的操作需要支持python2,企业七中缺一些依赖性,此处改为企业八来实现。
先创建一台企业八的虚拟机;双网卡双硬盘,CPU做直通。所有服务部署到一台主机。
|