[toc]
ldirectord 结合ipvsadm 配置nat,dr模型
一、nat模型
主机为两块网卡, 一个是桥接,一个仅主机 (其中仅主机的配置静态地址为192.16.0.5)
主机为一块网卡,仅主机(配置静态地址为192.16.0.2)
网关指向 192.16.0.5
主机为一块网卡,仅主机(配置静态地址为192.16.0.3)
网关指向 192.16.0.5
directory 此时:可以在drector主机上进行测试,
directory 使用ipvsadm指定调度算法及调度主机;
在别的主机中测试结果
| |
| <h1>RS1</h1> |
| <h1>RS2</h2> |
| <h1>RS1</h1> |
| <h1>RS1</h1> |
| |
| |
| |
| checktimeout=3 |
| checkinterval=1 |
| fallback=127.0.0.1:80 |
| autoreload=yes |
| logfile=”/var/log/ldirectord.log” |
| quiescent=no |
| virtual=172.16.250.89:80 |
| real=192.16.0.2:80 masq 1 |
| real=192.16.0.3:80 masq 3 |
| fallback=127.0.0.1:80 masq |
| service=http |
| scheduler=wrr |
| protocol=tcp |
| checktype=negotiate |
| checkport=80 |
注:virtual:172.16.250.89:80 ,后面需要指定端口,否则protocol=tcp指定启动时会报错
real=192.16.0.2:80 masq 因为上面配置的为nat模型,所以此处使用masq
fallback=172.0.0.1:80 此处便是nginx的sorry server,但所有结点都停掉时,会向用户提供一个sorry server
| |
| |
| 在别的主机中测试 |
| |
| <h1>RS2</h2> |
| <h1>RS1</h1> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| node1,node2 将两个结点手动停掉 |
| |
二、dr 模型
- directory ,node1 ,node2 三台主机都是一块网块, 并且网卡都为桥接,且node1,nod2,不需要指定网关
编写脚本
| |
| |
| vip=172.16.252.166 |
| mask=255.255.255.255 |
| interface=’lo:0′ |
| eth=’eno16777736:0′ |
| case $1 in |
| start) |
| echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore |
| echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore |
| echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce |
| echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce |
| ifconfig $interface $vip netmask $mask broadcast $vip up |
| route add -host $vip dev $interface |
| ;; |
| dstart) |
| ifconfig $eth $vip/32 netmask $mask broadcast $vip up |
| ;; |
| dstop) |
| ifconfig $eth down |
| ;; |
| stop) |
| ifconfig $interface down |
| echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore |
| echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore |
| echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce |
| echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce |
| ;; |
| status) |
| ifconfig |
| cat /proc/sys/net/ipv4/conf/all/arp_ignore |
| cat /proc/sys/net/ipv4/conf/lo/arp_ignore |
| cat /proc/sys/net/ipv4/conf/all/arp_announce |
| cat /proc/sys/net/ipv4/conf/lo/arp_announce |
| ;; |
| *) |
| echo “Usage: $(basename $0) {dstart|dstop|start|stop}” |
| exit 1 |
| esac |
在director主机中执行
在node1主机中执行
| |
| |
| |
| echo “<h1>NODE1</h1>” > /var/www/html/index.html |
在node2主机中执行
| |
| |
| |
| echo “<h2>NODE2</h2>” > /var/www/html/index.html |
在其它主机中进行测试
| #for i in {1..4} ; do curl 172.16.252.166; done |
| <h1>RS1</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| |
| |
| checktimeout=3 |
| checkinterval=1 |
| fallback=127.0.0.1:80 |
| autoreload=yes |
| logfile=”/var/log/ldirectord.log” |
| quiescent=no |
| virtual=172.16.252.166:80 |
| real=172.16.251.191:80 gate 1 |
| real=172.16.251.232:80 gate 3 |
| fallback=127.0.0.1:80 gate |
| service=http |
| scheduler=wrr |
| protocol=tcp |
| checktype=negotiate |
| checkport=80 |
| |
在其它主机中进行测试
| |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS2</h2> |
| <h1>RS1</h2> |
| 当主机所有结点都停止服务时 (node1,node2) |
| |
| |
| Sorry Page |
| Sorry Page |
| Sorry Page |
| Sorry Page |
- 借助防火墙标记来分类报文,而后标记定义集群服务,这样不同的服务可以使用一个集群进行调度,并启用持久连接
- 将两台node结点启动
在director主机中配置
在其它主机中进行测试
| |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
在两台node结点上建立https服务
在director主机中生成自签证书
| node2 |
| |
| node1 |
| |
| nod1,node1 |
| |
| 修改 : SSLCertificateFile /etc/httpd/cacert/httpd.crt |
| SSLCertificateKeyFile /etc/httpd/cacert/httpd.key |
| |
在其它主机中进行测试:
| |
| 加入 : 172.16.252.166 www.rj.com |
测试https与http的持久连接
| |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
| <h1>RS2</h2> |
在 ldirectord 中实现
| driector |
| |
| checktimeout=3 |
| checkinterval=1 |
| fallback=127.0.0.1:80 |
| autoreload=yes |
| logfile=”/var/log/ldirectord.log” |
| quiescent=no |
| virtual=10 |
| real=172.16.251.191:80 gate 1 |
| real=172.16.251.232:80 gate 3 |
| fallback=127.0.0.1:80 gate |
| service=http |
| scheduler=wrr |
| checktype=negotiate |
| checkport=80 |
| |
| |
在其它主机中进行测试
| |
| <h1>RS1</h2> |
| <h1>RS2</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |
| <h1>RS2</h2> |
| <h1>RS1</h2> |
| <h1>RS1</h2> |