Linux下为Openstack私有云部署私有网络

续我的上上上篇博文:https://mp.csdn.net/postedit/89382441即Openstack的私有云已经搭建部署好

和续我的上上篇博文:https://mp.csdn.net/postedit/89453942即Openstack私有云的Dashboard界面已经搭建部署好。

和续我的上篇博文:https://mp.csdn.net/postedit/89455155即在Dashboard界面为Openstack私有云部署自己创建的公有网络已经完成。

为Openstack私有云部署私有网络

配置控制节点:

1、Networking服务——>安装并配置控制节点——>配置网络选项——>配置网络选项2:私有网络(只需配置私有网络部分,其余Networking服务内容在博客“基于Openstack安装部署私有云”中已经部署过)

(1)安装组件

[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 \
>   openstack-neutron-linuxbridge ebtables -y

(2)配置服务组件

编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:

[root@controller ~]# vim /etc/neutron/neutron.conf
在 [database] 部分,配置数据库访问:   #之前配置公有网络时,配置过,其实这里不用再配置
[database]
connection = mysql+pymysql://neutron:neutron@controller/neutron


在``[DEFAULT]``部分,启用Modular Layer 2 (ML2)插件,路由服务和重叠的IP地址:   #只需将原来配置中的变量"service_plugins"加一个值即可,并在下一行加入allow_overlapping_ips = True
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True


在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:   #之前配置公有网络时,配置过,其实这里不用再配置
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack


在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
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 = neutron
password = neutron


在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True

[nova]
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova


在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

(3)配置 Modular Layer 2 (ML2) 插件

编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:

[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
在``[ml2]``部分,启用flat,VLAN以及VXLAN网络:   #在原来的基础上添加vxlan即可
[ml2]
type_drivers = flat,vlan,vxlan


在``[ml2]``部分,启用flat,VLAN以及VXLAN网络:   #在原来的基础上添加vxlan即可
[ml2]
...
tenant_network_types = vxlan



在``[ml2]``部分,启用Linuxbridge和layer-2机制:   #在原来的基础上添加l2population
即可
[ml2]
...
mechanism_drivers = linuxbridge,l2population



在``[ml2]`` 部分,启用端口安全扩展驱动:   #之前配置公有网络时配置过,这里其实不用配置
[ml2]
...
extension_drivers = port_security


在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:   #之前配置公有网络时配置过,这里其实不用配置
[ml2_type_flat]
flat_networks = provider


在``[ml2_type_vxlan]``部分,为私有网络配置VXLAN网络识别的网络范围:
[ml2_type_vxlan]
vni_ranges = 1:1000



在 ``[securitygroup]``部分,启用 ipset 增加安全组规则的高效性:   #之前配置公有网络时配置过,这里其实不用配置
[securitygroup]
...
enable_ipset = True

 

(4)配置Linuxbridge代理

编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:

[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:   #之前在配置公有网络时配置过,其实这里不用再配置
[linux_bridge]
physical_interface_mappings = provider:eth1


在``[vxlan]``部分,启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population:   #将之前配置过的enable_vxlan的值由False改为True,在下面再添加两行内容
[vxlan]
enable_vxlan = True
local_ip = 172.25.83.1
l2_population = True


在 ``[securitygroup]``部分,启用安全组并配置 Linuxbridge iptables firewall driver:   之前在配置公有网络时配置过,其实这里不用再配置
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

(5)配置layer-3代理

编辑``/etc/neutron/l3_agent.ini``文件并完成以下操作:

[root@controller ~]# vim /etc/neutron/l3_agent.ini
在``[DEFAULT]``部分,配置Linuxbridge接口驱动和外部网络网桥:
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge =

(6)配置DHCP代理

编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:

[root@controller ~]# vim /etc/neutron/dhcp_agent.ini
在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据:   #之前在配置公有网络时配置过,其实这里不用再配置
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

(7)上面的内容配置完成之后,重启Networking服务

对于两种网络选项:

[root@controller ~]# systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

对于网络选项2(私有网络),同样启用layer-3服务并设置其随系统自启动

[root@controller ~]# systemctl enable neutron-l3-agent.service
[root@controller ~]# systemctl start neutron-l3-agent.service

部署完私有网络之后,查看代理是否配置成功(是否增加了L3代理)

[root@controller ~]# source admin-openrc 
[root@controller ~]# neutron agent-list
+-------------+-------------+------------+-------------------+-------+----------------+-----------------+
| id          | agent_type  | host       | availability_zone | alive | admin_state_up | binary          |
+-------------+-------------+------------+-------------------+-------+----------------+-----------------+
| 054d7873-d9 | Metadata    | controller |                   | :-)   | True           | neutron-        |
| d8-468a-    | agent       |            |                   |       |                | metadata-agent  |
| 86bd-622e89 |             |            |                   |       |                |                 |
| 9b6b2d      |             |            |                   |       |                |                 |
| 3c56880f-e3 | DHCP agent  | controller | nova              | :-)   | True           | neutron-dhcp-   |
| 07-4bfa-8f3 |             |            |                   |       |                | agent           |
| 9-547cb2fc0 |             |            |                   |       |                |                 |
| 313         |             |            |                   |       |                |                 |
| 5afeeaf9-bd | L3 agent    | controller | nova              | :-)   | True           | neutron-l3-agen |
| 0c-4546     |             |            |                   |       |                | t               |
| -9f7c-712ce |             |            |                   |       |                |                 |
| e5f94d3     |             |            |                   |       |                |                 |
| be3f1b28    | Linux       | compute1   |                   | :-)   | True           | neutron-        |
| -cced-47b0- | bridge      |            |                   |       |                | linuxbridge-    |
| b497-3e8acd | agent       |            |                   |       |                | agent           |
| 45fb04      |             |            |                   |       |                |                 |
| e36e88bb-73 | Linux       | controller |                   | :-)   | True           | neutron-        |
| 95-4b00-9d1 | bridge      |            |                   |       |                | linuxbridge-    |
| 9-fb3fab476 | agent       |            |                   |       |                | agent           |
| 061         |             |            |                   |       |                |                 |
+-------------+-------------+------------+-------------------+-------+----------------+-----------------+

配置计算节点:

1、Networking服务——>安装并配置计算节点——>配置网络选项——>配置网络选项2:私有网络(只需配置私有网络部分,其余Networking服务内容在博客“基于Openstack安装部署私有云”中已经部署过)

(1)配置Linuxbridge代理

编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:

[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
physical_interface_mappings = provider:eth1


在``[vxlan]``部分,启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population:   #将之前配置过的enable_vxlan的值由原来的False改为True
[vxlan]
enable_vxlan = True
local_ip = 172.25.83.2
l2_population = True


在 ``[securitygroup]``部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

(2)上面的内容配置完成之后,重启Linuxbridge代理

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

接着继续配置控制节点:

1、Dashboard——>安装和配置——>安全并配置组件中的/etc/openstack-dashboard/local_settings文件中的禁用支持3层网络服务改为启用(只需配置私有网络部分,其余Networking服务内容在博客“基于Openstack安装部署私有云”中已经部署过)

[root@controller ~]# vim /etc/openstack-dashboard/local_settings   #将原来的False改为True
OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': True,
    'enable_quotas': True,
    'enable_ipv6': True,
    'enable_distributed_router': True,
    'enable_ha_router': True,
    'enable_lb': True,
    'enable_firewall': True,
    'enable_vpn': True,
    'enable_fip_topology_check': True,




#上面的配置文件修改完之后,重启web服务器以及会话存储服务:
systemctl restart httpd.service memcached.service

至此,为Openstack私有云部署私有网络也就完成了。

下面在Dashboard界面创建私有网络,创建路由并运行实例:

(1)在Dashboard界面创建私有网络,以demo用户的身份执行。

点击“连接”

点击“创建网络”

配置内容如下:

点击“已创建”

点击“网络”

(2)在Dashboard界面将公有网络public修改为外部网络,以使路由与公有网络public建立连接:以admin用户的身份运行。

点击“连接”

点击“管理员”——>“网络“

点击“public”后面的“编辑网络”

勾选“外部网络”前面的框框

点击“保存”

(3)在Dashboard界面创建路由:以demo用户的身份创建

点击“连接”

点击“网络”——>“路由”——>“新建路由”

编写内容如下:

点击“新建路由”

点击“网络”——>“网络拓扑”

从上图我们可以看到公网public的标志变为了地球形状的。

(4)为新建的路由router添加接口,以使私有网络private与公有网络建立连接:以demo用户的身份执行

点击“网络”——>“路由”——>“router”——>“接口”

点击“增加接口”

编辑内容如下:

点击“提交”

点击“网络”——>“网络拓扑”

从上图,我们可以看到私有网络private和路由router建立了连接

(5)用私有网络private启动一个实例:以demo用户的身份运行

点击“计算”——>“云主机”——>“创建云主机”

具体的编写内容如下:

点击“启动实例”

点击“server2”后面的“创建快照”——>“控制台”——>“点击此处只显示控制台”,在控制台中的操作如下:

在控制台操作之前,现在物理机设置iptables的策略,使得虚拟机可以上网
[root@foundation83 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE

从上图可以看到,该云主机vm2可以ping通baidu,也能ping同云主机vm1的ip地址(172.25.83.101)

返回首页,点击“网络”——>“网络拓扑”


从上图,我们可以看到新建的云主机server2已经和私有网络private建立了连接

下面我们测试云主机vm1的ip地址能否ping通云主机vm2的ip地址

[root@controller ~]# ssh [email protected]
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:63:97:e2 brd ff:ff:ff:ff:ff:ff
    inet 172.25.83.101/24 brd 172.25.83.255 scope global eth0
    inet6 fe80::f816:3eff:fe63:97e2/64 scope link 
       valid_lft forever preferred_lft forever
$ ping 192.168.83.3
PING 192.168.83.3 (192.168.83.3): 56 data bytes
^C
--- 192.168.83.3 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

从上面的测试中,我们可以看到vm1云主机ping不通vm2云主机的ip地址,那么,如何做才能使其能够ping通呢?答案是,给云主机vm2绑定一个公网public的浮动ip。

给云主机vm2绑定一个公网public的浮动ip

点击“计算”——>“云主机”——>“vm2后面的创建快照”——>“绑定浮动ip”

点击“IP地址”这一栏后面的“+”,编写内容如下:

点击“分配IP”

点击“关联”

此时我们再次测试云主机vm1的ip地址能否ping通云主机vm2的浮动ip地址

[root@controller ~]# ssh [email protected]
$ ping 172.25.83.103
PING 172.25.83.103 (172.25.83.103): 56 data bytes
64 bytes from 172.25.83.103: seq=0 ttl=63 time=5.455 ms
^C
--- 172.25.83.103 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 5.455/5.455/5.455 ms

下面我们连接云主机vm2的浮动ip地址,我们实际看到的连接的是vm2云主机的ip地址

[root@controller ~]# ssh [email protected]
The authenticity of host '172.25.83.103 (172.25.83.103)' can't be established.
RSA key fingerprint is d2:74:fb:aa:b3:34:ab:d1:a1:da:28:b9:70:5e:30:69.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.83.103' (RSA) to the list of known hosts.
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:c2:c6:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.83.3/24 brd 192.168.83.255 scope global eth0
    inet6 fe80::f816:3eff:fec2:c6e0/64 scope link 
       valid_lft forever preferred_lft forever
$ ping 172.25.83.101
PING 172.25.83.101 (172.25.83.101): 56 data bytes
64 bytes from 172.25.83.101: seq=0 ttl=63 time=5.807 ms
^C
--- 172.25.83.101 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 5.807/5.807/5.807 ms

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/89460301