美文网首页OpenStack
⑪ OpenStack高可用集群部署方案(train版)—修改L

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

作者: Linux丶晨星 | 来源:发表于2020-09-22 18:28 被阅读0次

    绪论

    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
    

    相关文章

      网友评论

        本文标题:⑪ OpenStack高可用集群部署方案(train版)—修改L

        本文链接:https://www.haomeiwen.com/subject/owxgyktx.html