⑪ OpenStack高可用集群部署方案(train版)—修改Linuxbridge为Openvswitch

绪论

openvswitch的原理和常用命令
Neutron中Linux bridge与Open vSwitch两种plugin优劣势对比:

目前说到虚拟交换机,通常会想到使用Open vSwitch做虚拟交换机,因为支持Open vSwitch的个人和企业都想要有一个开放的模式把他们的服务集成进OpenStack。 Open vSwitch社区做了大量的工作,希望提升Open vSwitch作为最主要虚拟交换机的地位。社区期望Open vSwitch将在软件定义网络(SDN)接管网络时代到来时,提供所有可能最好的交换服务。但是,Open vSwitch的复杂性使用户渴望更简单的网络解决方案,在这过程中需要Linux Bridge这样的简单桥接技术来支持云解决方案。

但是Open vSwitchh支持者会指出Linux Bridge 缺少可扩展性的隧道模型。Linux Bridge支持GRE隧道,但是并不支持更前沿和扩展性更好的VXLAN模型。因此有这些观点的网络专家们,他们会比较坚定的认为复杂的解决方案比一个简单的解决方案要好。

当然,Linux Bridge已经发生了变化,也有助于缩小使用Open vSwitch和Linux Bridge的之间的差距,包括添加VXLAN支持隧道技术。但是在更大的网络规模中,Linux Bridge的简单性可能会产生更大的价值。

我们都知道,OpenStack社区官方的安装文档的步骤在liberty版本之前都是以OpenvSwitch为例子的。而且从OpenStack 用户调查来看,使用 Open vSwitch的人比使用 linux bridge 多很多。

Liberty 版本之前社区官方文档都是使用 neutron-plugin-openvswitch-agent, 但是Liberty 版本转为使用 neutron-plugin-linuxbridge-agent。社区文档只留了这么一句话,意思是Linuxbridge更加简单。

“In comparison to provider networks with Open vSwitch (OVS), thisscenario relies completely on native Linux networking services which makes itthe simplest of all scenarios in this guide.”

以下是Open vSwitch与Linux bridge之间的优劣势对比:
① Open vSwitch 目前还存在不少稳定性问题,比如:
1.Kernetlpanics 1.10
2.ovs-switchedsegfaults 1.11
3.广播风暴
4.Datacorruption 2.01

② 于Linux bridge,OpenvSwitch有以下好处:
1.Qos配置,可以为每台vm配置不同的速度和带宽
2.流量监控
3.数据包分析
4.将openflow引入到ovs中,实现控制逻辑和物理交换网络分离

③ 为什么可以使用 Linux bridge?
1.稳定性和可靠性要求:Linux bridge 有十几年的使用历史,非常成熟。
2.易于问题诊断 (troubleshooting)
3.社区也支持
4.还是可以使用Overlay 网络 VxLAN 9需要 Linux 内核 3.9 版本或者以上)

④ 使用 Linux bridge 的局限性
1.Neutron DVR还不支持 Linux bridge
2.不支持 GRE
3.一些 OVS 提供但是 Neutorn 不支持的功能

⑤ 长期来看,随着稳定性的进一步提高,Open vSwitch 会在生产环境中成为主流。

可以看出:
(1)OVS 将各种功能都原生地实现在其中,这在起始阶段不可避免地带来潜在的稳定性和可调试性问题;
(2)Linux bridge 依赖各种其他模块来实现各种功能,而这些模块的发布时间往往都已经很长,稳定性较高;
(3)两者在核心功能上没有什么差距,只是在集中管控和性能优化这一块Open vSwitch有一些新的功能或者优化。但是,从测试结果看,两者的性能没有明显差异;

总之,目前,Open vSwitch与Linux bridge都有各自的适合的场景,对于云用户来说也提供了更好的两种优秀的网络解决方案,除了SDN对集中管控的需求,和更新更多的网络特性时,Open vSwitch更加有优势,但是在稳定性,大规模网络部署等场景中Linux bridge 是个较好的选择。本文来自九州云技术人员投稿,供大家参考!


之前使用的是官网提供的linuxbridge+vxlan模式;
本篇记录要将linuxbridge+vxlan模式改装成openvswitch+vxlan模式!

1. 当前集群应用分布情况

由于将网络节点直接部署在了计算节点上,因此,只需要将compute节点上的 neutron-linuxbridge-agent改成neutron-openvswitch-agent即可;

2. 准备工作

2.1 所有安装过linuxbridge的节点都删除-compute01/02/03

删除已经配置的linuxbridge网络,可直接在dashboard上面操作;
删除顺序如下:释放虚拟ip端口–>删除路由–>删除网络;
验证是否还有未删除网络,输出为空;

[root@controller01 ~]#  openstack network list

2.2 查看安装linuxbridge的节点

[root@controller01 ~]# openstack network agent list |grep linuxbridge
| 386b5467-6e0a-416d-96cb-6ecee5ec2bac | Linux bridge agent | compute03 | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 553a76ba-996b-4840-af0e-ebee74efe852 | Linux bridge agent | compute02 | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 5a2ed9ea-1e8d-4bc2-a317-a70b8b196703 | Linux bridge agent | compute01 | None              | :-)   | UP    | neutron-linuxbridge-agent |

2.3 关闭并卸载neutron-linuxbridge-agent

全部安装linuxbridge的计算节点上;

systemctl disable neutron-linuxbridge-agent.service
systemctl stop neutron-linuxbridge-agent.service 
yum remove -y openstack-neutron-linuxbridge

2.4 安装openvswitch

全部计算节点上;

yum install -y openstack-neutron-openvswitch

内核配置

echo '
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
'>>/etc/sysctl.conf

[root@compute01 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

3. 全部控制节点配置修改

以controller01为例;
设置开启route,前面已经设置过的,可不执行

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

3.1 备份ml2配置及修改

[root@controller01 ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.linuxbridge}

[root@controller01 ~]# cat /etc/neutron/plugins/ml2/ml2_conf.ini
[DEFAULT]

[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_flat]
flat_networks = provider

[ml2_type_vxlan]
vni_ranges = 1:1000

[securitygroup]
enable_ipset = true

拷贝到其他控制节点

scp /etc/neutron/plugins/ml2/ml2_conf.ini controller02:/etc/neutron/plugins/ml2/
scp /etc/neutron/plugins/ml2/ml2_conf.ini controller03:/etc/neutron/plugins/ml2/

3.2 全部控制节点重启服务

systemctl restart neutron-server.service
systemctl status neutron-server.service

4. 全部计算节点配置修改

以compute01为例;全部计算节点执行

4.1 备份文件

cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.linuxbridge}
cp /etc/neutron/l3_agent.ini{,.linuxbridge}
cp /etc/neutron/dhcp_agent.ini{,.linuxbridge}
cp /etc/neutron/plugins/ml2/openvswitch_agent.ini{,.bak}

4.2 修改ml2_conf.ini

[root@compute01 ~]# cat /etc/neutron/plugins/ml2/ml2_conf.ini
[DEFAULT]

[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_flat]
flat_networks = provider

[ml2_type_vxlan]
vni_ranges = 1:1000

[securitygroup]
enable_ipset = true

拷贝文件到其他计算节点

scp /etc/neutron/plugins/ml2/ml2_conf.ini controller02:/etc/neutron/plugins/ml2/
scp /etc/neutron/plugins/ml2/ml2_conf.ini controller03:/etc/neutron/plugins/ml2/

4.3 l3_agent.ini

[root@compute01 ~]# cat /etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge = br-ex

拷贝文件到其他计算节点

scp /etc/neutron/l3_agent.ini controller02:/etc/neutron/
scp /etc/neutron/l3_agent.ini controller03:/etc/neutron/

4.4 修改dhcp_agent.ini

[root@compute01 ~]# cat /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

拷贝文件到其他计算节点

scp /etc/neutron/dhcp_agent.ini controller02:/etc/neutron/
scp /etc/neutron/dhcp_agent.ini controller03:/etc/neutron/

4.5 修改openvswitch_agent.ini

local_ip修改为当前计算节点的主机ip

[root@compute01 ~]# cat >/etc/neutron/plugins/ml2/openvswitch_agent.ini <<EOF
[ovs]
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = 10.15.253.162
#bridge_mappings = br-ex
#bridge_mappings = provider:br-ex
bridge_mappings = 
[agent]
tunnel_types = vxlan,gre
l2_population = true
arp_responder = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
EOF

4.6 启动openvswitch服务

systemctl enable openvswitch.service
systemctl restart openvswitch.service
systemctl status openvswitch.service

4.7 创建网桥,将ip转移到网桥,添加到开机启动

openvswitch的原理和常用命令

ip地址修改为当前节点;以compute01为例;

[root@compute01 ~]# echo '#
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex ens192
ovs-vsctl show
ifconfig ens192 0.0.0.0 
ifconfig br-ex 10.15.253.162/12
route add default gw 10.0.0.1 #可选,添加默认路由
#'>>/etc/rc.d/rc.local 

创建并验证

[root@compute01 ~]# chmod +x /etc/rc.d/rc.local; tail -n 8 /etc/rc.d/rc.local |bash
098ad342-1b96-4a8b-8217-9f048c47ad52
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
        Port "ens192"
            Interface "ens192"
    ovs_version: "2.12.0"


[root@compute01 ~]# ifconfig br-ex
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.15.253.162  netmask 255.240.0.0  broadcast 10.15.255.255
        inet6 fe80::250:56ff:fe82:63f3  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:82:63:f3  txqueuelen 1000  (Ethernet)
        RX packets 4049  bytes 2132288 (2.0 MiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 3528  bytes 869196 (848.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4.8 关闭网卡的开机自启,修改以下项

全部计算节点;关闭的目的是以保证OVS创建的网卡可以安全使用

sed -i 's#ONBOOT=yes#ONBOOT=no#g' /etc/sysconfig/network-scripts/ifcfg-ens192

4.9 全部计算节点重启服务

systemctl restart neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service neutron-openvswitch-agent.service
systemctl status neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service neutron-openvswitch-agent.service

5. 控制节点验证

[root@controller01 ~]# openstack network agent list

在控制节点上删除去除的linuxbridge服务;删除对应的ID即可

openstack network agent delete 386b5467-6e0a-416d-96cb-6ecee5ec2bac
openstack network agent delete 553a76ba-996b-4840-af0e-ebee74efe852
openstack network agent delete 5a2ed9ea-1e8d-4bc2-a317-a70b8b196703
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335