美文网首页
ovn load balance功能

ovn load balance功能

作者: 分享放大价值 | 来源:发表于2021-05-31 08:46 被阅读0次

本文实验ovn的load balance功能,在nbdb数据库中提供了Load_Balancer表,用来设置相关参数,每行代表一个load balancer。


image.png

vips指定vip及其endpoint,当load balance被设置到逻辑交换机时,vip必须和逻辑交换机在不同的网段。
默认情况下,使用dp_hash值来选择endpoint,也可以通过设置selection_fields自定义计算hash。

load balance可以被逻辑交换机和逻辑路由器引用。


image.png image.png

本次实验的逻辑拓扑


image.png

图中蓝色部分表示在ls1上的vm1和vm2上启动web服务,vip为10.10.10.22:8000。
在ls2上创建lb规则,使ls2上的vm来可以访问此vip提供的服务。

首先创建非蓝色部分的组件

###创建两个交换机和一个路由器
//创建两个虚拟交换机 ls1 和 ls2
ovn-nbctl ls-add ls1
ovn-nbctl ls-add ls2
//创建一个虚拟路由器 lr1
ovn-nbctl lr-add lr1

//在虚拟路由器 lr1 上添加端口,用来连接虚拟交换机 ls1
ovn-nbctl lrp-add lr1 lr1-ls1 00:00:00:00:00:01 10.10.10.1/24

//在虚拟交换机 ls1 上添加端口,用来连接虚拟路由器 lr1
ovn-nbctl lsp-add ls1 ls1-lr1
//端口类型必须为 router
ovn-nbctl lsp-set-type ls1-lr1 router
//设置地址,必须和 lr1-ls1 的一致
ovn-nbctl lsp-set-addresses ls1-lr1 00:00:00:00:00:01
//指定 router-port
ovn-nbctl lsp-set-options ls1-lr1 router-port=lr1-ls1

//在虚拟路由器 lr1 上添加端口,用来连接虚拟交换机 ls2
ovn-nbctl lrp-add lr1 lr1-ls2 00:00:00:00:00:02 10.10.20.1/24

//在虚拟交换机 ls2 上添加端口,用来连接虚拟路由器 lr1
ovn-nbctl lsp-add ls2 ls2-lr1
//端口类型必须为 router
ovn-nbctl lsp-set-type ls2-lr1 router
//设置地址,必须和 lr1-ls2 的一致
ovn-nbctl lsp-set-addresses ls2-lr1 00:00:00:00:00:02
//指定 router-port
ovn-nbctl lsp-set-options ls2-lr1 router-port=lr1-ls2

###在交换机上添加vm接口
//在虚拟交换机 ls1 上添加两个端口,指定 mac 和 ip(10.10.10.0/24网段),用来连接vm
ovn-nbctl lsp-add ls1 ls1-vm1
ovn-nbctl lsp-set-addresses ls1-vm1 "00:00:00:00:00:03 10.10.10.2"
ovn-nbctl lsp-set-port-security ls1-vm1 "00:00:00:00:00:03 10.10.10.2"

ovn-nbctl lsp-add ls1 ls1-vm2
ovn-nbctl lsp-set-addresses ls1-vm2 "00:00:00:00:00:04 10.10.10.3"
ovn-nbctl lsp-set-port-security ls1-vm2 "00:00:00:00:00:04 10.10.10.3"

//在虚拟交换机 ls2 上添加两个端口,指定 mac 和 ip(10.10.20.0/24网段),用来连接vm
ovn-nbctl lsp-add ls2 ls2-vm1
ovn-nbctl lsp-set-addresses ls2-vm1 "00:00:00:00:00:03 10.10.20.2"
ovn-nbctl lsp-set-port-security ls2-vm1 "00:00:00:00:00:03 10.10.20.2"

ovn-nbctl lsp-add ls2 ls2-vm2
ovn-nbctl lsp-set-addresses ls2-vm2 "00:00:00:00:00:04 10.10.20.3"
ovn-nbctl lsp-set-port-security ls2-vm2 "00:00:00:00:00:04 10.10.20.3"

###创建四个vm
//在 master 节点上,创建两个namespace,用来模拟两个vm,使用 "iface-id" 指定
//这两个vm属于 ls1
ip netns add vm1
ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal
ip link set vm1 netns vm1
ip link set vm1 address 00:00:00:00:00:03
ip netns exec vm1 ip addr add 10.10.10.2/24 dev vm1
ip netns exec vm1 ip link set vm1 up
ip netns exec vm1 ip route add default via 10.10.10.1 dev vm1
ovs-vsctl set Interface vm1 external_ids:iface-id=ls1-vm1


ip netns add vm2
ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal
ip link set vm2 netns vm2
ip link set vm2 address 00:00:00:00:00:04
ip netns exec vm2 ip addr add 10.10.10.3/24 dev vm2
ip netns exec vm2 ip link set vm2 up
ip netns exec vm2 ip route add default via 10.10.10.1 dev vm2
ovs-vsctl set Interface vm2 external_ids:iface-id=ls1-vm2


//在 node1 节点上,创建两个namespace,用来模拟两个vm,使用 "iface-id" 指定这两个vm属于 ls2
ip netns add vm1
ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal
ip link set vm1 netns vm1
ip link set vm1 address 00:00:00:00:00:03
ip netns exec vm1 ip addr add 10.10.20.2/24 dev vm1
ip netns exec vm1 ip link set vm1 up
ip netns exec vm1 ip route add default via 10.10.20.1 dev vm1
ovs-vsctl set Interface vm1 external_ids:iface-id=ls2-vm1

ip netns add vm2
ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal
ip link set vm2 netns vm2
ip link set vm2 address 00:00:00:00:00:04
ip netns exec vm2 ip addr add 10.10.20.3/24 dev vm2
ip netns exec vm2 ip link set vm2 up
ip netns exec vm2 ip route add default via 10.10.20.1 dev vm2
ovs-vsctl set Interface vm2 external_ids:iface-id=ls2-vm2

在ls1上的vm1和vm2上分别启动web服务

rm /tmp/www -rf
mkdir -p /tmp/www
echo "i am vm1" > /tmp/www/index.html
cd /tmp/www
ip netns exec vm1 python -m SimpleHTTPServer 8000

rm /tmp/www1 -rf
mkdir -p /tmp/www1
echo "i am vm2" > /tmp/www1/index.html
cd /tmp/www1
ip netns exec vm2 python -m SimpleHTTPServer 8000

创建lb规则,并添加到ls2上。ls2网段为10.10.20.0/24,vip为不同网段的10.10.10.22

ovn-nbctl lb-add lb2 10.10.10.22:8000 "10.10.10.2:8000,10.10.10.3:8000" tcp
ovn-nbctl ls-lb-add ls2 lb2

root@master:~# ovn-nbctl ls-lb-list ls2
UUID                                    LB                  PROTO      VIP                 IPs
1caa32a5-05ab-47e2-bc84-3e8f1d74bef5    lb2                 tcp        10.10.10.22:8000    10.10.10.2:8000,10.10.10.3:8000

在ls2上vm中访问此vip提供的服务,可看到返回的内容是变化的,说明load balance成功。

root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm2
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm2

可通过修改load balance的selection_fields为ip_src,这样只会根据源ip计算,这样同一个vm发出的报文只会发给同一个endpoint

root@master:~# ovn-nbctl set load_balancer lb2 selection_fields=ip_src

执行多次,结果都是一样的内容。

root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1
root@node1:~# ip netns exec vm2 curl 10.10.10.22:8000
i am vm1

相关文章

  • ovn load balance功能

    本文实验ovn的load balance功能,在nbdb数据库中提供了Load_Balancer表,用来设置相关参...

  • django服务器的响应流程

    服务器响应流程 -browser -> load balance(负载均衡) -load balance -> N...

  • envoy源码阅读之proxy主要功能

    作为proxy具备的功能 downstream连接管理upstream hosts管理load balance转发...

  • load balance

    负载均衡 负载均衡常用的dns服务器。首先说明dns原理。 假定域名为m.xyz.com的主机想知道另一个主机y....

  • Use nginx and rails config load

    Use nginx and rails config load balance Source code: http...

  • Dubbo负载均衡策略

    1. random loadbalance random load balance ,随机分配策略,即随机调用实现...

  • ovn acl功能

    本文介绍一下ovn的acl功能,用来设置访问控制列表,并且只能应用在逻辑交换机或者port group上,不能应用...

  • 4、Flume的高阶特性

    1.load-balance负载均衡 a1.sinkgroups = g1a1.sinkgroups.g1.sin...

  • Linux内核load balance(一)

    [TOC] ## NUMA ### 为什么要有NUMA 在NUMA架构出现前,CPU欢快的朝着频率越来越高的方向发...

  • 理解负载均衡(Load balance)

    什么是负载均衡 负载均衡(Load balance),是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、...

网友评论

      本文标题:ovn load balance功能

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