神刀安全网

Java EE Servers as Nova-Docker Containers && RDO Mitaka External vlan networks

Java EE Servers as Nova-Docker Containers && RDO Mitaka External vlan networks

Nova-Docker driver is installed on Compute node which is supposed to run two Java EE Servers as light weight Nova-Docker Containers (instances) having floating IPs on two different external vlan enabled subnets (10.10.10.0/24; 10.10.50.0/24).  General Setup RDO Mitaka  ML2&OVS&VLAN 3 Nodes. VLAN tenant’s segregation for RDO lansdcape was selected to avoid DVR configuration Controller && Compute Cluster.

Details here  Setup Docker Hypervisor on Multi Node DVR Cluster RDO Mitaka

Thus Controller/Network RDO Mitaka Node has to have external networks of VLAN type with predefined vlan tags. Straight forward packstack deployment doesn’t  allow to achieve desired network configuration. External network provider of vlan type appears to be required.

Also I have to notice that Docker Hypervisor running on Compute Node

requires all deployment nodes set SELINUX to PERMISSIVE MODE.

In particular case, office networks 10.10.10.0/24 is vlan tagged (157), 10.10.50.0/24 is vlan tagged (172) already exists when RDO install is running.

192.169.142.127 Controller/Network

192.169.142.147 Storage Node

192.169.142.137 Compute Node

192.169.142.45   WKS ( 3VNICs eth0 – 192.169.142.45 , eth1.157 – 10.10.10.45, eth2.172 – 10.10.50.45 ), running web browser to connect to Java Servers

First

***********************************************************

Update /etc/neutron/plugins/ml2/ml2_conf.ini

***********************************************************

[root@ip-192-169-142-127 ml2(keystone_demo)]# cat ml2_conf.ini

[ml2]

type_drivers = flat,vlan,vxlan

tenant_network_types = vlan,vxlan

mechanism_drivers =openvswitch

path_mtu = 0

[ml2_type_flat]

[ml2_type_vlan]

network_vlan_ranges =physnet1:100:200,vlan157:157:157,vlan172:172:172,physnet4

[ml2_type_gre]

[ml2_type_vxlan]

vni_ranges =10:100

vxlan_group =224.0.0.1

[ml2_type_geneve]

[securitygroup]

enable_security_group = True

**************

Then

**************

# openstack-service restart neutron

***************************************************

Invoke external network provider

***************************************************

[root@ip-192-169-142-127 ~(keystone_admin]#neutron net-create vlan157 –shared –provider:network_type vlan –provider:segmentation_id 157 –provider:physical_network vlan157 –router:external

[root@ip-192-169-142-127 ~(keystone_admin]# neutron subnet-create –name sub-vlan157 –gateway 10.10.10.1  –allocation-pool start=10.10.10.100,end=10.10.10.200 vlan157 10.10.10.0/24

***********************************************

Create second external vlan network

***********************************************

[root@ip-192-169-142-127 ~(keystone_admin]# neutron net-create vlan172 –shared –provider:network_type vlan –provider:segmentation_id 172 –provider:physical_network vlan172  –router:external

[root@ip-192-169-142-127 ~(keystone_admin]# neutron subnet-create –name sub-vlan172 –gateway 10.10.50.1 –allocation-pool start=10.10.50.100,end=10.10.50.200 vlan172 10.10.50.0/24

*************************************

Creating third flat network

*************************************

# neutron net-create external4 — –router:external  /

–provider:network_type=flat /

–provider:physical_network=physnet4

# neutron subnet-create –disable-dhcp external4 192.179.143.0/24

[root@ip-192-169-142-127 ~(keystone_admin)]# neutron net-show vlan157

+—————————+————————————–+

| Field                     | Value                                |

+—————————+————————————–+

| admin_state_up            | True                                 |

| availability_zone_hints   |                                      |

| availability_zones        | nova                                 |

| created_at                | 2016-05-05T11:04:57                  |

| description               |                                      |

| id                        | 98116982-6553-4b7e-920c-0284a7200916 |

| ipv4_address_scope        |                                      |

| ipv6_address_scope        |                                      |

| is_default                | False                                |

| mtu                       | 1500                                 |

| name                      | vlan157                              |

| provider:network_type     | vlan                                 |

| provider:physical_network | vlan157                              |

| provider:segmentation_id  | 157                                  |

| router:external           | True                                 |

| shared                    | True                                 |

| status                    | ACTIVE                               |

| subnets                   | d50fddd2-46e7-4c67-8ab5-97e952bc11c9 |

| tags                      |                                      |

| tenant_id                 | 5d0e67d2fe7a403180fe77232b0cdcd5     |

| updated_at                | 2016-05-05T11:04:57                  |

+—————————+————————————–+

[root@ip-192-169-142-127 ~(keystone_admin)]# neutron subnet-show sub-vlan157

+——————-+————————————————–+

| Field             | Value                                            |

+——————-+————————————————–+

| allocation_pools  | {"start": "10.10.10.100", "end": "10.10.10.200"} |

| cidr              | 10.10.10.0/24                                    |

| created_at        | 2016-05-05T11:05:27                              |

| description       |                                                  |

| dns_nameservers   |                                                  |

| enable_dhcp       | True                                             |

| gateway_ip        | 10.10.10.1                                       |

| host_routes       |                                                  |

| id                | d50fddd2-46e7-4c67-8ab5-97e952bc11c9             |

| ip_version        | 4                                                |

| ipv6_address_mode |                                                  |

| ipv6_ra_mode      |                                                  |

| name              | sub-vlan157                                      |

| network_id        | 98116982-6553-4b7e-920c-0284a7200916             |

| subnetpool_id     |                                                  |

| tenant_id         | 5d0e67d2fe7a403180fe77232b0cdcd5                 |

| updated_at        | 2016-05-05T11:05:27                              |

+——————-+————————————————–+

[root@ip-192-169-142-127 ~(keystone_admin)]# neutron net-show vlan172

+—————————+————————————–+

| Field                     | Value                                |

+—————————+————————————–+

| admin_state_up            | True                                 |

| availability_zone_hints   |                                      |

| availability_zones        | nova                                 |

| created_at                | 2016-05-05T11:05:46                  |

| description               |                                      |

| id                        | 6fc89f42-cb85-4cdb-be5f-4d1768b05e14 |

| ipv4_address_scope        |                                      |

| ipv6_address_scope        |                                      |

| is_default                | False                                |

| mtu                       | 1500                                 |

| name                      | vlan172                              |

| provider:network_type     | vlan                                 |

| provider:physical_network | vlan172                              |

| provider:segmentation_id  | 172                                  |

| router:external           | True                                 |

| shared                    | True                                 |

| status                    | ACTIVE                               |

| subnets                   | 2d4f907b-1f80-451a-a663-b87bbd683d58 |

| tags                      |                                      |

| tenant_id                 | 5d0e67d2fe7a403180fe77232b0cdcd5     |

| updated_at                | 2016-05-05T11:05:46                  |

+—————————+————————————–+

[root@ip-192-169-142-127 ~(keystone_admin)]# neutron subnet-show sub-vlan172

+——————-+————————————————–+

| Field             | Value                                            |

+——————-+————————————————–+

| allocation_pools  | {"start": "10.10.50.100", "end": "10.10.50.200"} |

| cidr              | 10.10.50.0/24                                    |

| created_at        | 2016-05-05T11:10:18                              |

| description       |                                                  |

| dns_nameservers   |                                                  |

| enable_dhcp       | True                                             |

| gateway_ip        | 10.10.50.1                                       |

| host_routes       |                                                  |

| id                | 2d4f907b-1f80-451a-a663-b87bbd683d58             |

| ip_version        | 4                                                |

| ipv6_address_mode |                                                  |

| ipv6_ra_mode      |                                                  |

| name              | sub-vlan172                                      |

| network_id        | 6fc89f42-cb85-4cdb-be5f-4d1768b05e14             |

| subnetpool_id     |                                                  |

| tenant_id         | 5d0e67d2fe7a403180fe77232b0cdcd5                 |

| updated_at        | 2016-05-05T11:10:18                              |

+——————-+————————————————–+

Enable EPEL 7 to install vconfig ( or use ip CLI )

***************************************************

Next Step – external bridges setup on Controller

***************************************************

# modprobe 8021q

# ovs-vsctl add-br br-vlan

# ovs-vsctl add-port br-vlan eth2

# vconfig add br-vlan 157

# ovs-vsctl add-br br-vlan2

# ovs-vsctl add-port br-vlan2 eth3

# vconfig add br-vlan2 172

**********************************

External flat network

**********************************

# ovs-vsctl add-br br-eth4

# ovs-vsctl add-port  br-eth4  eth4

***********************************************************************

Internal vlan vm/data network setup on Compute per

known since RDO Mitaka RC1 bug

https://bugzilla.redhat.com/show_bug.cgi?id=1338012

************************************************************************

# ovs-vsctl add-br br-eth1

# ovs-vsctl add-port  br-eth1  eth1

****************************************************

Update Neutron OVS configuration files

****************************************************

Start with the following comment in  l3_agent.ini :

# When external_network_bridge is set, each L3 agent can be associated # with no more than one external network. This value should be set to the UUID # of that external network. To allow L3 agent support multiple external # networks, both the external_network_bridge and gateway_external_network_id # must be left empty. 

******************************

Update l3_agent.ini file

******************************

external_network_bridge =

gateway_external_network_id =

******************************************************

/etc/neutron/plugins/ml2/openvswitch_agent.ini

******************************************************

bridge_mappings = physnet1:br-eth1,vlan157:br-vlan,vlan172:br-vlan2,physnet4:br-eth4

*************************************

Update Neutron Configuration

*************************************

# openstack-service restart neutron

************************************************

Set up config persistent between reboots

************************************************

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-eth2

DEVICE="eth2"

ONBOOT=yes

OVS_BRIDGE=br-vlan

TYPE=OVSPort

DEVICETYPE="ovs"

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-eth3

DEVICE="eth3"

ONBOOT=yes

OVS_BRIDGE=br-vlan2

TYPE=OVSPort

DEVICETYPE="ovs"

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-br-vlan

DEVICE=br-vlan

BOOTPROTO=none

ONBOOT=yes

TYPE=OVSBridge

DEVICETYPE="ovs"

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-br-vlan2

DEVICE=br-vlan2

BOOTPROTO=none

ONBOOT=yes

TYPE=OVSBridge

DEVICETYPE="ovs"

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-br-vlan.157

BOOTPROTO="none"

DEVICE="br-vlan.157"

ONBOOT="yes"

IPADDR="10.10.10.150"

PREFIX="24"

GATEWAY="10.10.10.1"

DNS1="83.221.202.254"

VLAN=yes

NOZEROCONF=yes

USERCTL=no

[root@ip-192-169-142-127 network-scripts(keystone_admin)]# cat ifcfg-br-vlan2.172

BOOTPROTO="none"

DEVICE="br-vlan2.172"

ONBOOT="yes"

IPADDR="10.10.50.150"

PREFIX="24"

GATEWAY="10.10.50.1"

DNS1="83.221.202.254"

VLAN=yes

NOZEROCONF=yes

***************************

Then run script

***************************

#!/bin/bash -x

chkconfig network on

systemctl stop NetworkManager

systemctl disable NetworkManager

service network restart

# openstack-service restart neutron

[root@ip-192-169-142-127 ~(keystone_admin)]#  ip -details link show dev br-vlan.157

34: br-vlan.157@br-vlan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT

link/ether ba:bb:33:85:aa:49 brd ff:ff:ff:ff:ff:ff promiscuity 0

vlan protocol 802.1Q id 157 <REORDER_HDR> addrgenmode eui64

[root@ip-192-169-142-127 ~(keystone_admin)]#  ip -details link show dev br-vlan2.172

33: br-vlan2.172@br-vlan2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT

link/ether 0e:e7:2d:26:c3:4a brd ff:ff:ff:ff:ff:ff promiscuity 0

vlan protocol 802.1Q id 172 <REORDER_HDR> addrgenmode eui64

[root@ip-192-169-142-127 ~(keystone_admin)]# ip route

default via 10.10.10.1 dev br-vlan.157 

10.10.10.0/24 dev br-vlan.157  proto kernel  scope link  src 10.10.10.150 

10.10.50.0/24 dev br-vlan2.172  proto kernel  scope link  src 10.10.50.150 

169.254.0.0/16 dev eth0  scope link  metric 1002 

169.254.0.0/16 dev eth1  scope link  metric 1003 

169.254.0.0/16 dev eth2  scope link  metric 1004 

169.254.0.0/16 dev eth3  scope link  metric 1005 

169.254.0.0/16 dev eth4  scope link  metric 1006 

169.254.0.0/16 dev br-vlan  scope link  metric 1009 

169.254.0.0/16 dev br-ex  scope link  metric 1010 

169.254.0.0/16 dev br-vlan2  scope link  metric 1012 

192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 

192.169.142.0/24 dev br-ex  proto kernel  scope link  src 192.169.142.127 

***************************

Controller/Network

***************************

[root@ip-192-169-142-127 ~(keystone_admin)]# ovs-vsctl show

d12e6a7a-f589-42cd-91b3-96156ad9ed59

Bridge br-int

fail_mode: secure

Port "tap114497da-9f"

tag: 1

Interface "tap114497da-9f"

type: internal

Port "tap390b9bc5-b9"

tag: 5

Interface "tap390b9bc5-b9"

type: internal

Port "int-br-vlan2"

Interface "int-br-vlan2"

type: patch

options: {peer="phy-br-vlan2"}

Port "tap4b0c52b8-90"

tag: 3

Interface "tap4b0c52b8-90"

type: internal

Port "qr-795380c4-1d"

tag: 2

Interface "qr-795380c4-1d"

type: internal

Port "qg-b856b873-d0"

tag: 3

Interface "qg-b856b873-d0"

type: internal

Port "tap119f2a5f-2e"

tag: 4

Interface "tap119f2a5f-2e"

type: internal

Port int-br-vlan

Interface int-br-vlan

type: patch

options: {peer=phy-br-vlan}

Port "qr-2e2d2e81-14"

tag: 1

Interface "qr-2e2d2e81-14"

type: internal

Port "qg-234c2d9c-0a"

tag: 4

Interface "qg-234c2d9c-0a"

type: internal

Port "qr-41a1a0fa-ec"

tag: 5

Interface "qr-41a1a0fa-ec"

type: internal

Port br-int

Interface br-int

type: internal

Port "qg-5c7b2d0a-1b"

tag: 6

Interface "qg-5c7b2d0a-1b"

type: internal

Port "int-br-eth4"

Interface "int-br-eth4"

type: patch

options: {peer="phy-br-eth4"}

Port "int-br-eth1"

Interface "int-br-eth1"

type: patch

options: {peer="phy-br-eth1"}

Port "tap936bd80d-26"

tag: 2

Interface "tap936bd80d-26"

type: internal

Bridge "br-vlan2"   <===external vlan172 network

Port "eth3"

Interface "eth3"

Port "phy-br-vlan2"

Interface "phy-br-vlan2"

type: patch

options: {peer="int-br-vlan2"}

Port "br-vlan2"

Interface "br-vlan2"

type: internal

Bridge "br-eth4"    <===external flat network

Port "eth4"

Interface "eth4"

Port "phy-br-eth4"

Interface "phy-br-eth4"

type: patch

options: {peer="int-br-eth4"}

Port "br-eth4"

Interface "br-eth4"

Bridge br-ex

Port br-ex

Interface br-ex

type: internal

Port "eth0"

Interface "eth0"

Bridge "br-eth1"        <=== internal vlan enabled vm/data network

Port "phy-br-eth1"

Interface "phy-br-eth1"

type: patch

options: {peer="int-br-eth1"}

Port "eth1"

Interface "eth1"

Port "br-eth1"

Interface "br-eth1"

type: internal

Bridge br-vlan    <===external vlan157 network

Port br-vlan

Interface br-vlan

type: internal

Port "eth2"

Interface "eth2"

Port phy-br-vlan

Interface phy-br-vlan

type: patch

options: {peer=int-br-vlan}

ovs_version: "2.4.0"

[root@ip-192-169-142-127 ~(keystone_admin)]# ifconfig

br-ex: flags=4163  mtu 1500

inet 192.169.142.127  netmask 255.255.255.0  broadcast 192.169.142.255

inet6 fe80::3058:e2ff:fe5c:f64c  prefixlen 64  scopeid 0x20ether 32:58:e2:5c:f6:4c  txqueuelen 0  (Ethernet)

RX packets 54754  bytes 12112793 (11.5 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 48647  bytes 15788730 (15.0 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

br-vlan: flags=4163  mtu 1500

inet6 fe80::2054:9fff:feb5:b645  prefixlen 64  scopeid 0x20ether 22:54:9f:b5:b6:45  txqueuelen 0  (Ethernet)

RX packets 51  bytes 6647 (6.4 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 298  bytes 16763 (16.3 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

br-vlan2: flags=4163  mtu 1500

inet6 fe80::149a:c9ff:fe29:2240  prefixlen 64  scopeid 0x20ether 16:9a:c9:29:22:40  txqueuelen 0  (Ethernet)

RX packets 497  bytes 24405 (23.8 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 31  bytes 4481 (4.3 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

br-vlan.157: flags=4163  mtu 1500

inet 10.10.10.150  netmask 255.255.255.0  broadcast 10.10.10.255

inet6 fe80::2054:9fff:feb5:b645  prefixlen 64  scopeid 0x20

ether 22:54:9f:b5:b6:45  txqueuelen 0  (Ethernet)

RX packets 34  bytes 4667 (4.5 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 290  bytes 14955 (14.6 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

br-vlan2.172: flags=4163  mtu 1500

inet 10.10.50.150  netmask 255.255.255.0  broadcast 10.10.50.255

inet6 fe80::149a:c9ff:fe29:2240  prefixlen 64  scopeid 0x20

ether 16:9a:c9:29:22:40  txqueuelen 0  (Ethernet)

RX packets 480  bytes 16181 (15.8 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 23  bytes 3741 (3.6 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163  mtu 1500

inet6 fe80::5054:ff:fe82:e40e  prefixlen 64  scopeid 0x20ether 52:54:00:82:e4:0e  txqueuelen 1000  (Ethernet)

RX packets 56233  bytes 12189701 (11.6 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 48639  bytes 15786905 (15.0 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163  mtu 1500

inet6 fe80::5054:ff:feb2:82c  prefixlen 64  scopeid 0x20ether 52:54:00:b2:08:2c  txqueuelen 1000  (Ethernet)

RX packets 4327  bytes 2918115 (2.7 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 1882  bytes 6415333 (6.1 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=4163  mtu 1500

inet6 fe80::5054:ff:fec9:cdcf  prefixlen 64  scopeid 0x20ether 52:54:00:c9:cd:cf  txqueuelen 1000  (Ethernet)

RX packets 3334  bytes 6491253 (6.1 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 3064  bytes 2816873 (2.6 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth3: flags=4163  mtu 1500

inet6 fe80::5054:ff:fe48:266f  prefixlen 64  scopeid 0x20ether 52:54:00:48:26:6f  txqueuelen 1000  (Ethernet)

RX packets 2027  bytes 108290 (105.7 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 88  bytes 43478 (42.4 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth4: flags=4163  mtu 1500

inet6 fe80::5054:ff:fe92:f712  prefixlen 64  scopeid 0x20ether 52:54:00:92:f7:12  txqueuelen 1000  (Ethernet)

RX packets 1489  bytes 77816 (75.9 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 9  bytes 718 (718.0 B)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10

loop  txqueuelen 0  (Local Loopback)

RX packets 422071  bytes 134700542 (128.4 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 422071  bytes 134700542 (128.4 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099  mtu 1500

inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

ether 52:54:00:e9:36:be  txqueuelen 0  (Ethernet)

RX packets 0  bytes 0 (0.0 B)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 0  bytes 0 (0.0 B)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

******************************************************************************************

Verification VLAN connectivity from WKS (VM) having eth1.157 && eth2.172 to mentioned bellow Java Servers running on Compute Node 192.169.142.137 as Nova-Docker Containers (instances)  with floating ips on vlan157 and  vlan172 correspondently

******************************************************************************************

Network configuration on WKS

[root@VlanConnect ~]# ifconfig

eth0: flags=4163

mtu 1500

inet 192.169.142.45  netmask 255.255.255.0  broadcast 192.169.142.255

inet6 fe80::5054:ff:fef5:a7eb  prefixlen 64  scopeid 0x20

ether 52:54:00:f5:a7:eb  txqueuelen 1000  (Ethernet)

RX packets 3358  bytes 178671 (174.4 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 22  bytes 3676 (3.5 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



[root@VlanConnect ~]# ip -details link show dev eth1.157

mtu 1500 qdisc noqueue state UP mode DEFAULT

link/ether 52:54:00:2e:71:6c brd ff:ff:ff:ff:ff:ff promiscuity 0

addrgenmode eui64

[root@VlanConnect ~]# ip -details link show dev eth2.172

********************************************************************************

Attempt to launch browser to GlassFish 4.X and Tomcat 7.0 consoles

********************************************************************************

Nova-Docker instance derbyGlassfish01 on vlan157 (10.10.10.105:4848)

Nova-Docker instance  Tomcat  on vlan172  (10.10.50.105:8080)

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

Java EE Servers as Nova-Docker Containers &amp;&amp; RDO Mitaka External vlan networks

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Java EE Servers as Nova-Docker Containers && RDO Mitaka External vlan networks

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址