Openstack云平台脚本部署之Neutron网络服务配置(九)

2023-05-16

目录

一、简介

二、部署脚本

2.1 网络节点独立部署

2.2 控制节点与网络节点融合部署

2.3 脚本详细介绍

三、参考文档

四、源码

五、系列文章


一、简介

Openstack网络服务Neutron主要负责网络连接任务,包括租户网络及子网的创建、网卡端口配置、访问IP地址管理以及高级网络服务(负载均衡DBaas、防火墙FwaaS)功能。以上功能通过不同的插件和代理来实现二层、三层及四七层网络虚拟化,常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理,插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。

Neutron的组成如下:

  • Neutron-server:接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的;
  • OpenStack网络插件和代理:插拔端口,创建网络和子网,以及提供IP地址,这些插件和代理依赖于供应商和技术而不同,OpenStack网络基于插件和代理为Cisco 虚拟和物理交换机、NEC OpenFlow产品,Open vSwitch,Linux bridging以及VMware NSX 产品穿线搭桥。

二、部署脚本

2.1 网络节点独立部署

为了减轻网络的负载,网络服务在单独节点上(三个网络节点上)进行部署,但为了方便Neutron API的统一管理与调用,Neutron Server是部署在控制节点上,即Neutron需要在控制节点上配置neutron的管理和ml2插件配置,需要在网络节点上配置neutron-openvswitch-agent、 neutron-l3-agent、neutron-dhcp-agent和neutron-metadata-agent服务,以及创建外网访问br-ex网桥配置。网络服务架构,计算节点上安装配置neutron-openvswitch-agent和openvswitch服务,服务架构同下图类似:

此外,由于本部署采用了HA高可用架构,同三个控制节点上管理集群类似,在三个网络节点同样安装了pacemaker集群管理软件,用于网络节点上neutron-openvswitch-agent、 neutron-l3-agent、neutron-dhcp-agent和neutron-metadata-agent服务的高可用配置。

首先在控制节点上通过0-set-config.sh设置网络节点配置信息:

1

2

3

4

5

declare -A networker_map=(["network01"]="192.168.2.14" ["network02"]="192.168.2.15" ["network03"]="192.168.2.16");

### 网络HA集群默认部署节点(必须存在该主机名的节点)

network_host=network01

### 网络节点是否单独部署,若是设置为yes,否设置为no

networker_split=yes

然后执行安装脚本install-configure-neutron.sh,会完成neutron的所有配置安装,install-configure-neutron.sh在完成控制节点上配置,会调用 install-configure-pacemaker-networkers.sh脚本进行网络节点HA集群部署,然后调用install-configure-neutron-networkers.sh完成网络节点上服务配置及br-ex外网网桥创建及配置。

PS. 网络节点单独部署优势不仅可以减少虚拟机访问的网络负载,还可以将Openstack控制集群与网络集群隔离开,如果控制集群发生异常,不影响网络集群,此时已经创建的虚拟机可以正常访问,不影响其中运行业务,这一点可以大大减少故障范围,也可以方便进行故障恢复。

2.2 控制节点与网络节点融合部署

此情景不需要构建网络节点高可用集群,直接在控制节点上安装所有网络服务,将所有网络服务加入到控制节点上pacemaker资源中即可。

首先在控制节点上通过0-set-config.sh设置网络节点配置信息:让网络节点和控制节点重叠即可,并设置网络节点单独部署配置项为no

1

2

3

4

5

declare -A networker_map=(["controller01"]="192.168.2.11" ["controller02"]="192.168.2.12" ["controller03"]="192.168.2.13");

### 网络HA集群默认部署节点(必须存在该主机名的节点)

network_host=controller01

### 网络节点是否单独部署,若是设置为yes,否设置为no

networker_split=no

然后执行install-configure-neutron.sh安装即可,实际安装过程中,会跳过 install-configure-pacemaker-networkers.sh脚本,不会创建网络节点的高可用集群,由于网络节点和控制节点融合,所有的网络服务都会加入到控制节点pacemaker上资源中。

2.3 脚本详细介绍

neutron服务一键安装脚本:install-configure-neutron.sh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

#!/bin/sh

. ../0-set-config.sh

./style/print-split.sh "Neutron Installation"

### [所有控制节点] 修改/etc/haproxy/haproxy.cfg文件

. ./1-gen-haproxy-cfg.sh neutron

###[所有控制节点] 安装配置

./pssh-exe C "yum install -y openstack-neutron openstack-neutron-ml2 python-neutronclient"

for ((i=0; i<${#controller_map[@]}; i+=1));

do

name=${controller_name[$i]};

ip=${controller_map[$name]};

. style/print-info.sh "Openstack configure in $name"

ssh root@$ip /bin/bash << EOF

openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_host $ip

openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:$password@$virtual_ip/neutron

openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2

openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router

openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips True

openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_hosts controller01:5672,controller02:5672,controller03:5672

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_ha_queues true

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_retry_interval 1

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_retry_backoff 2

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_max_retries 0

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_durable_queues true

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack

openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password $password

openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://$virtual_ip:5000

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://$virtual_ip:35357

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller01:11211,controller02:11211,controller03:11211

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron

openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password $password

openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes True

openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes True

openstack-config --set /etc/neutron/neutron.conf nova auth_url http://$virtual_ip:35357

openstack-config --set /etc/neutron/neutron.conf nova auth_type password

openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default

openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default

openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne

openstack-config --set /etc/neutron/neutron.conf nova project_name service

openstack-config --set /etc/neutron/neutron.conf nova username nova

openstack-config --set /etc/neutron/neutron.conf nova password $password

openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan,gre

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers openvswitch,l2population

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks external

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_security_group True

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup firewall_driver iptables_hybrid

openstack-config --set /etc/nova/nova.conf neutron url http://$virtual_ip:9696

openstack-config --set /etc/nova/nova.conf neutron auth_url http://$virtual_ip:35357

openstack-config --set /etc/nova/nova.conf neutron auth_type password

openstack-config --set /etc/nova/nova.conf neutron project_domain_name default

openstack-config --set /etc/nova/nova.conf neutron user_domain_name default

openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne

openstack-config --set /etc/nova/nova.conf neutron project_name service

openstack-config --set /etc/nova/nova.conf neutron username neutron

openstack-config --set /etc/nova/nova.conf neutron password $password

openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy True

openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret $password

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service

EOF

done;

### [任一节点]创建数据库

mysql -uroot -p$password_galera_root -h $virtual_ip -e "CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '"$password"';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'controller01' IDENTIFIED BY '"$password"';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '"$password"';

FLUSH PRIVILEGES;"

### [任一节点]创建用户等

. /root/keystonerc_admin

openstack user create --domain default --password $password neutron

openstack role add --project service --user neutron admin

openstack service create --name neutron --description "OpenStack Networking" network

openstack endpoint create --region RegionOne network public http://$virtual_ip:9696

openstack endpoint create --region RegionOne network internal http://$virtual_ip:9696

openstack endpoint create --region RegionOne network admin http://$virtual_ip:9696

### [任一节点]生成数据库

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

### [任一节点]添加pacemaker资源

pcs resource create neutron-server systemd:neutron-server op start timeout=300 --clone interleave=true

pcs constraint order start openstack-keystone-clone then neutron-server-clone

pcs resource op add neutron-server start timeout=300

pcs resource op add neutron-server stop timeout=300

### [任一节点]测试

. restart-pcs-cluster.sh

. /root/keystonerc_admin

neutron ext-list

### [网络节点] 安装网络高可用集群

if [[ "$networker_split" = "yes" ]];then

echo "Need to configure pcs cluster in networkers!"

. install-configure-pacemaker-networkers.sh

fi

. install-configure-neutron-networkers.sh

### [任一节点]测试

. /root/keystonerc_admin

neutron agent-list

网络节点上的pcs高可用集群部署脚本install-configure-pacemaker-networkers.sh如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#!/bin/sh

. ../0-set-config.sh

./style/print-split.sh "Networkers Pacemaker Installation"

### [所有网络节点] 安装软件

./pssh-exe N "yum install -y pcs pacemaker corosync fence-agents-all resource-agents"

### [所有网络节点] 配置服务

./pssh-exe N "systemctl enable pcsd && systemctl start pcsd"

### [所有网络节点]设置hacluster用户的密码

./pssh-exe N "echo $password_ha_user | passwd --stdin hacluster"

### [network01]设置到集群节点的认证

ssh root@$network_host pcs cluster auth ${networker_name[@]} -u hacluster -p $password_ha_user --force

### [network01]创建并启动集群

ssh root@$network_host pcs cluster setup --force --name openstack-cluster ${networker_name[@]}

ssh root@$network_host pcs cluster start --all

ssh root@$network_host sleep 5

### [network01]设置集群属性

ssh root@$network_host pcs property set pe-warn-series-max=1000 pe-input-series-max=1000 pe-error-series-max=1000 cluster-recheck-interval=5min

### [network01] 暂时禁用STONISH,否则资源无法启动

ssh root@$network_host pcs property set stonith-enabled=false

### [network01] 检验集群状态

ssh root@$network_host pcs cluster status

网络节点neutron服务配置脚本install-configure-neutron-networkers.sh如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

#!/bin/sh

#####[所有网络节点] 安装neutron

./pssh-exe N "yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch"

### [所有网络节点]配置neutron server

for ((i=0; i<${#networker_map[@]}; i+=1));

do

  name=${networker_name[$i]};

  ip=${networker_map[$name]};

  . style/print-info.sh "Openstack configure in $name"

  data_ip=$(ssh $ip cat /etc/sysconfig/network-scripts/ifcfg-$data_nic |grep IPADDR=|egrep -v "#IPADDR"|awk -F "=" '{print $2}')

  ssh root@$ip /bin/bash << EOF

  openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_host $ip

  openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:$password@$virtual_ip/neutron

  openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2

  openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router

  openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips True

  openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_hosts controller01:5672,controller02:5672,controller03:5672

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_ha_queues true

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_retry_interval 1

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_retry_backoff 2

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_max_retries 0

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_durable_queues true

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack

  openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password $password

  openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://$virtual_ip:5000

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://$virtual_ip:35357

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller01:11211,controller02:11211,controller03:11211

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron

  openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password $password

  openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes True

  openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes True

  openstack-config --set /etc/neutron/neutron.conf nova auth_url http://$virtual_ip:35357

  openstack-config --set /etc/neutron/neutron.conf nova auth_type password

  openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default

  openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default

  openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne

  openstack-config --set /etc/neutron/neutron.conf nova project_name service

  openstack-config --set /etc/neutron/neutron.conf nova username nova

  openstack-config --set /etc/neutron/neutron.conf nova password $password

  openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan,gre

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers openvswitch,l2population

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks external

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_security_group True

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True

  openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup firewall_driver iptables_hybrid

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini securitygroup enable_security_group True

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini securitygroup enable_ipset True

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini securitygroup firewall_driver iptables_hybrid

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs local_ip $data_ip

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings external:br-ex

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini agent tunnel_types vxlan

  openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini agent l2_population True

  openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver

  openstack-config --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge

  openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver

  openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq

  openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata True

  openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip $virtual_ip

  openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret $password

  openstack-config --set /etc/neutron/neutron.conf DEFAULT l3_ha True

  openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_automatic_l3agent_failover True

  openstack-config --set /etc/neutron/neutron.conf DEFAULT max_l3_agents_per_router 3

  openstack-config --set /etc/neutron/neutron.conf DEFAULT min_l3_agents_per_router 2

  openstack-config --set /etc/neutron/neutron.conf DEFAULT dhcp_agents_per_network 3

  systemctl enable openvswitch.service

  systemctl start openvswitch.service

  ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

EOF

done;

### [任一网络节点]添加pacemaker资源

ssh root@$network_host /bin/bash << EOF

  pcs resource create neutron-scale ocf:neutron:NeutronScale --clone globally-unique=true clone-max=3 interleave=true

  pcs resource create neutron-ovs-cleanup ocf:neutron:OVSCleanup --clone interleave=true

  pcs resource create neutron-netns-cleanup ocf:neutron:NetnsCleanup --clone interleave=true

  pcs resource create neutron-openvswitch-agent systemd:neutron-openvswitch-agent --clone interleave=true

  pcs resource create neutron-dhcp-agent systemd:neutron-dhcp-agent --clone interleave=true

  pcs resource create neutron-l3-agent systemd:neutron-l3-agent --clone interleave=true

  pcs resource create neutron-metadata-agent systemd:neutron-metadata-agent  --clone interleave=true

  pcs constraint order start neutron-scale-clone then neutron-ovs-cleanup-clone

  pcs constraint colocation add neutron-ovs-cleanup-clone with neutron-scale-clone

  pcs constraint order start neutron-ovs-cleanup-clone then neutron-netns-cleanup-clone

  pcs constraint colocation add neutron-netns-cleanup-clone with neutron-ovs-cleanup-clone

  pcs constraint order start neutron-netns-cleanup-clone then neutron-openvswitch-agent-clone

  pcs constraint colocation add neutron-openvswitch-agent-clone with neutron-netns-cleanup-clone

  pcs constraint order start neutron-openvswitch-agent-clone then neutron-dhcp-agent-clone

  pcs constraint colocation add neutron-dhcp-agent-clone with neutron-openvswitch-agent-clone

  pcs constraint order start neutron-dhcp-agent-clone then neutron-l3-agent-clone

  pcs constraint colocation add neutron-l3-agent-clone with neutron-dhcp-agent-clone

  pcs constraint order start neutron-l3-agent-clone then neutron-metadata-agent-clone

  pcs constraint colocation add neutron-metadata-agent-clone with neutron-l3-agent-clone

  pcs resource op add neutron-scale start timeout=300

  pcs resource op add neutron-scale stop timeout=300

  pcs resource op add neutron-ovs-cleanup start timeout=300

  pcs resource op add neutron-ovs-cleanup stop timeout=300

  pcs resource op add neutron-netns-cleanup start timeout=300

  pcs resource op add neutron-netns-cleanup stop timeout=300

  pcs resource op add neutron-openvswitch-agent start timeout=300

  pcs resource op add neutron-openvswitch-agent stop timeout=300

  pcs resource op add neutron-dhcp-agent start timeout=300

  pcs resource op add neutron-dhcp-agent stop timeout=300

  pcs resource op add neutron-l3-agent start timeout=300

  pcs resource op add neutron-l3-agent stop timeout=300

  pcs resource op add neutron-metadata-agent start timeout=300

  pcs resource op add neutron-metadata-agent stop timeout=300

EOF

###[所有网络节点] ovs 操作

echo "ovs-vsctl add-br br-ex

ovs-vsctl add-port br-ex "$local_nic

tag=`eval date +%Y%m%d%H%M%S`

for ((i=0; i<${#networker_map[@]}; i+=1));

do

  name=${networker_name[$i]};

  ip=${networker_map[$name]};

  echo "-------------$name------------"

  \cp ../conf/ifcfg-br-ex.template ../conf/ifcfg-br-ex

  \cp ../conf/ifcfg-local_nic.template ../conf/ifcfg-local_nic

  ssh $ip cp /etc/sysconfig/network-scripts/ifcfg-$local_nic /etc/sysconfig/network-scripts/bak-ifcfg-$local_nic-$tag

  ssh $ip cat /etc/sysconfig/network-scripts/ifcfg-$local_nic |grep NETMASK >> ../conf/ifcfg-br-ex

  ssh $ip cat /etc/sysconfig/network-scripts/ifcfg-$local_nic |grep PREFIX >> ../conf/ifcfg-br-ex

  ssh $ip cat /etc/sysconfig/network-scripts/ifcfg-$local_nic |grep DNS1 >> ../conf/ifcfg-br-ex

  ssh $ip cat /etc/sysconfig/network-scripts/ifcfg-$local_nic |grep GATEWAY >> ../conf/ifcfg-br-ex

  sed -i -e 's#IPADDR=#IPADDR='"$ip"'#g' ../conf/ifcfg-br-ex

  sed -i -e 's#NAME=#NAME='"$local_nic"'#g' ../conf/ifcfg-local_nic

  sed -i -e 's#DEVICE=#DEVICE='"$local_nic"'#g' ../conf/ifcfg-local_nic

  scp ../conf/ifcfg-local_nic root@$ip:/etc/sysconfig/network-scripts/ifcfg-$local_nic

  scp ../conf/ifcfg-br-ex root@$ip:/etc/sysconfig/network-scripts/ifcfg-br-ex

  ssh root@$ip /bin/bash << EOF

  ovs-vsctl add-br br-ex

  ovs-vsctl add-port br-ex $local_nic

  systemctl restart network.service

EOF

done;

### [任一网络节点]测试

.  restart-pcs-cluster-networkers.sh

. /root/keystonerc_admin

./pssh-exe N "ovs-vsctl show"

neutron agent-list

注明:neutron-openvswitch-agent和openvswitch服务会在计算节点上统一配置,这里不做介绍。

三、参考文档

OpenStack Docs: OpenStack Networking Guide

Configuring the networking services — openstackhaguide 0.0.1.dev824 documentation

OpenStack Docs: Scenario: Legacy with Open vSwitch

Neutron with existing external network —RDO

四、源码

脚本源码:GitHub - zjmeixinyanzhi/Openstack-HA-Install-Shells: Shell scripts for installing openstack high availability cluster

五、系列文章

“Openstack云平台脚本部署”系列文章目录如下:

Openstack云平台脚本部署之概述(零)

Openstack云平台脚本部署之基础环境配置(一)

Openstack云平台脚本部署之Galera高可用集群配置(二)

Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)

Openstack云平台脚本部署之MongoDB配置(四)

Openstack云平台脚本部署之Memcached配置(五)

Openstack云平台脚本部署之Keystone认证服务配置(六)

Openstack云平台脚本部署之Glance镜像服务配置(七)

Openstack云平台脚本部署之Nova计算服务配置(八)

Openstack云平台脚本部署之Neutron网络服务配置(九)

Openstack云平台脚本部署之Dashboard配置(十)

Openstack云平台脚本部署之Cinder块存储服务配置(十一)

Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)

Openstack云平台脚本部署之Aodh告警服务配置(十三)

Openstack云平台脚本部署之Ceph存储集群配置(十四)

Openstack云平台脚本部署之计算节点服务配置(十五)

Openstack云平台脚本部署之增加计算节点配置(十六)

Openstack云平台脚本部署之测试验证(十七)

Openstack云平台脚本部署之Ganglia监控(十八)

Openstack云平台脚本部署之Nagios监控(十九)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Openstack云平台脚本部署之Neutron网络服务配置(九) 的相关文章

  • win10最强DLL注入工具,远程线程注入、消息钩子注入、输入法注入、EIP注入、注册表注入、APC注入(APC好像不能用)

    说明 用的时候推荐先看看工具里的说明 工具实现了 xff1a 远程线程注入 消息钩子注入 输入法注入 APC注入 EIP注入 注册表注入 不过我在win10下的测试结果是APC注入好像win10用不了 xff0c 目前也没深入研究 远程线程
  • QT5 QTabWidget 隐藏Tab 或 显示Tab 正确的解决方案

    前言 xff1a 因为业务原因 xff0c 需要根据场景动态隐藏某个tab和显示某个tab xff0c 本着能不动手就不动手的原则我翻遍各大搜索引擎看到大部分人给出的解决方案的只是草草的说隐藏的时候remove xff0c 显示的时候再加回
  • 二进制开发常用正则备忘录

    一 xff1a 简要 本着以后项目能ctrl 43 c和ctrl 43 v的原则 xff0c 放到这里头备忘 二 xff1a 正则 xff08 1 xff09 xff1a 验证hex字符串 a fA F0 9 2 0 9a fA F 2 a
  • 解决Nginx各种错误

    1 xff1a 现象 修改配置后 xff0c 重启nginx发现起不来 xff0c 错误 xff1a open 34 var run nginx pid 34 failed 13 Permission denied 解决办法 xff1a s
  • 在线小游戏:人生重开模拟器

    原版游戏地址 xff1a Life Restart github xff1a GitHub VickScarlet lifeRestart 直 次 第三方版本 xff1a 天命版 xff08 解锁全天赋 xff0c 开局十天赋 xff09
  • Spring Boot/Spring Cloud解决中文乱码

    乱码的描述 xff08 废话 xff09 xff1a 中文都成了乱码 我在网上找了很多解决方案 xff0c 但是基本上都没解决我的问题 xff0c 直到翻了一下午的帖子找到了一个解决我项目乱码的一个解决方案 一般乱码问题基本上都是运行环境或
  • java使用graphql client

    在项目中引用graphql client 目前这个graphql client只支持post的graphql server 使用maven构建依赖关系 lt dependency gt lt groupId gt org mountclou
  • openssh 9.0p1版本和openssl1.1.1o版本部署实操

    准备 获取openssh 9 0p1版本软件包和openssl1 1 1o版本 如果设备可以连外网 xff0c 直接从服务器上wget获取 wget no check certificate https www openssl org so
  • Java使用ffmpeg多线程处理视频转码等任务框架-可获取任务进度-可同步或异步执行

    更新日志 v1 1 xff1a 升级命令模块 xff0c 支持in流和error流的日志读取 v1 2 xff1a 开放FFTerminal中的输入输出流的权限 xff0c 可以get使用 xff0c 方便对控制台的扩展 使用 lt dep
  • FPS游戏-罗技鼠标-通用的压枪宏

    郑重提示 这个宏不支持G HUB xff0c 只支持老款的鼠标驱动 xff08 因为当时G HUB刚出来全是bug就没用G HUB搞 xff0c 现在水平上去了也不想更新了哈哈 xff09 介绍 技术不行 xff0c 啥都白扯 本宏的开发用
  • 特殊字符对照表

    新的特殊字符编码对照表渲染后的字符编码十六进制渲染的十六进制编码十进制编码Java描述备注 amp x20 amp x20 amp 32 39 u0020 39 ordinary space amp xa2 amp xa2 amp 162
  • USB设备的bulk-only批量传输

    任何USB传输只能由主机发起 主机发送IN或OUT的请求只需一个令牌包 xff0c 这个包含在USBH BulkSendData 和USBH BulkReceiveData 函数中 xff0c 不需要编程者操心 为了详细一点的说明这些 xf
  • 基于stm32f407通过USB配置CH340

    1 在设备枚举的case ENUM SET CONFIGURATION 设置配置 状态后 xff0c 配置CH340的波特率 xff0c 然后跳过CBW和CSW协议 xff1b 直接采用批量传输的方式进行数据传输
  • FreeRTOS的多任务处理

    本文转载的原文路径为 xff1a https www cnblogs com yangguang it p 7233591 html 1 FreeRTOS 多任务调度支持 时间片段 xff0c 抢占式 和 和做式 任务侁先级可以在调度器启动
  • 单片机产生随机数

    在C语言中 为了生成随机数 xff0c 可以使用如下两个函数 xff1a void srand unsigned int seed int rand void 利用srand和rand 配合使用产生伪随机数序列 根据随机数种子rand 函数
  • C语言中 结构体成员冒号和的库函数

    C语言中的结构题成员 用冒号 xff1a struct sha204h temp key uint8 t value 32 unsigned int key id 4 unsigned int source flag 1 unsigned
  • 关于ATSHA204a的使用流程

    ATSHA204含有一个EEPROM 和 一个 SRAM EEPROM 包含 1个 Data Zone 512Bytes xff1a 一般用来存储密钥的 1个 configration Zone 88Bytes xff1a 用来设置Data
  • stm32L476RG,通过串口打印信息

    调试STM32L476RG时 xff0c 想要通过串口打印信息方法 xff1a 1 通过官方的历程 xff0c 移植USART的程序 xff0c 位置STM32Cube FW L4 V1 13 0 Projects NUCLEO L476R
  • k8s 1.18.20版本部署

    身为k8s初学者 xff0c 在掌握k8s理论知识的同时 xff0c 也需要掌握一下实际部署k8s的过程 xff0c 对于理论的学习起到一定的帮助作用 罗列了一下相关步骤 xff0c 请各位参考 xff1a 一 环境准备 三台虚机 xff1
  • java后端对接外部系统(HttpClient HttpPost)

    前言 最近遇到一个需求对接外部系统 xff0c 我们自己的系统发送请求 xff0c 根据请求内容的不同调用不同的外部系统 举例 xff1a 我们是做互联网医院的 xff0c 根据医生开处方选择药店的不同 xff0c 调用各药店自己的系统 x

随机推荐

  • “轻松搞定CMake”系列之find_package用法详解

    本文是 轻松搞定CMake 系列博客中的一篇 xff0c 该篇文章的主要目的是详细讲解一下CMake中搜包命令find package的使用和原理 其他更多文章请参考 xff1a 轻松搞定CMake 系列博客概述 文章目录 1 find p
  • 一遍成功的ROS主从机详细配置

    ROS支持多机互通 xff0c 可以设置一台主机 xff0c 多台从机 xff0c 主机中运行roscore xff0c 启动master节点 xff0c 从机直接运行其他节点 xff0c 在配置好的机器之间就可以互相通信了 xff0c 就
  • pip install列出待安装包的所有版本

    问题描述 一般我们在使用pip Install命令安装Python软件包的时候 xff0c 会想知道能安装的包版本的是多少 xff0c 这样方便自己选择可能的兼容版本进行安装 xff0c 在pip某个版本之前获取待安装包的所有版本命令比较简
  • ImportError with scipy.misc cannot import toimage错误解决

    问题描述 在使用如下代码时出现错误 xff1a span class token keyword import span scipy span class token punctuation span misc scipy span cla
  • AttributeError: module ‘requests‘ has no attribute ‘get‘

    问题描述 执行python程序时报错 xff1a AttributeError module span class token string 39 requests 39 span has no attribute span class t
  • Ubuntu下dpkg -i 安装deb报错 trying to overwrite shared

    问题表述 Ubuntu 22 04下 xff0c 执行下述命令时报错 xff1a 命令 xff1a span class token function sudo span dpkg i libglapi mesa 22 0 5 0ubunt
  • 4k高分屏Windows10下软件字体过小解决办法

    在Windows10下使用Matlab xff0c 由于是4k显示屏 xff0c 本来以为Matlab会出现字体过小的情况 xff0c 结果并没有出现什么问题 字体显示一切正常 xff0c 然而在打开Simulink时 xff0c Matl
  • Eigen矩阵运算开源库使用完全指南

    Eigen库是一个开源的矩阵运算库 xff0c 其利用C 43 43 模板编程的思想 xff0c 构造所有矩阵通过传递模板参数形式完成 由于模板类不支持库链接方式编译 xff0c 而且模板类要求全部写在头文件中 xff0c 从而导致导致Ei
  • “轻松搞定CMake”系列之CMakeLists文件编写语法规则详解

    文章目录 基本语法规则常见CMakeLists txt中指令剖析从VS项目配置过程理解CMakeLists内容CMake中常用变量汇总常用CMakeLists文件模板基础模板使用OpenCV库CMakeLists文件模板使用PCL库CMak
  • Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

    在k8s的道路上我们都是小白 xff0c 每天启动虚机都会遇到各种各样的问题 xff0c 这不 部署的k8s虚机启动发现操作系统启动异常 xff0c 提示如下报错信息 XFS xff08 dm 0 xff09 Internal error
  • 招聘笔试行测题之图形推理题解题思路汇总

    在一些公司的招聘过程中 xff0c 多少都会在笔试过程中遇到行测题 xff0c 这些行测题如果没有事先做过一些针对性的训练 xff0c 还是会感觉挺费劲的 xff0c 本博客主要汇总行测题中的图形推理题的一些解题思路 xff0c 供大家参考
  • ROS之tf空间坐标变换完全详解

    本博文主要汇总了自己在使用ROS中tf坐标变换包时查找的一些参考资料和博客 xff0c 包括了tf和部分tf2的使用 xff0c 在此感谢本博文中出现的所有的博客链接 xff01 参考资源 xff1a ROS官网详细介绍 xff1a htt
  • Word2016写论文之尾注功能——参考文献自动编号与引用(包括方括号去除方法)

    本系列文章主要详细介绍本人在使用Word2016写论文过程所用到的各种操作 xff0c 这些操作都非常的实用 xff0c 能够大为减少论文排版的工作量 其中很多方法也都是参考网上一些优秀博客的 xff0c 经过本人的实践成功之后才记录在此
  • vnc 设置不同用户登录

    a 在root用户下切换到其他用户 xff0c 以wolf用户为例 xff1a su wolf b 设置vnc连接密码 xff1a vncpasswd c 启动vnc服务 xff1a vncserver
  • 推荐几款常用的性能测试工具

    对内容不感兴趣拉到最后领取今天的外卖红包 常用的性能测试工具 对于开发人员来说 xff0c 首选是一些开源免费的性能 xff08 压力 xff09 测试软件 xff0c 例如 ab xff08 ApacheBench xff09 JMete
  • kubeadmin 快速部署k8s集群

    安装要求 在开始之前 xff0c 部署Kubernetes集群机器需要满足以下几个条件 xff1a 一台或多台机器 xff0c 操作系统 CentOS7 x 86 x64硬件配置 xff1a 2GB或更多RAM xff0c 2个CPU或更多
  • GetCurrentDirectory、SetCurrentDirectory和GetModuleFileName

    一 学习 GetModuleFileName xff1a 方法一 xff1a 想要访问执行程序 exe 路径下的文件 xff0c 有以下几个步骤 xff1a 1 先通过函数GetModuleFileName获取执行程序的绝对路径 TCHAR
  • C++定义全局类对象

    可能我这个全局类的说法不是很准确 xff0c 不过其实就是变量的扩展延伸 比如你想把一个类让全部的CPP都能用 xff0c 而不是一个变量 xff0c 那么需要这样定义 xff1a 假设有一个预编译头stdafx h 在stdafx h中加
  • Linux服务器VG扩容、LV扩容

    测试环境中K8s集群部署过程中发现磁盘大小太小 xff0c 需要对现有虚机的磁盘进行扩容 xff0c 计划 步骤1 虚机增加一块磁盘 步骤2 将磁盘添加到原有vg组中 步骤3 通过vg中资源给原有磁盘挂载目录进行lv扩容 实施步骤 xff1
  • Openstack云平台脚本部署之Neutron网络服务配置(九)

    目录 一 简介 二 部署脚本 2 1 网络节点独立部署 2 2 控制节点与网络节点融合部署 2 3 脚本详细介绍 三 参考文档 四 源码 五 系列文章 一 简介 Openstack网络服务Neutron主要负责网络连接任务 xff0c 包括