ceph rgw 高可用

软件介绍

1 Lvs

LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

结构

ceph rgw 高可用_第1张图片

负载均衡模式

VS/NAT

VS/TUN

VS/DR

 

参考:

http://os.51cto.com/art/201407/446863.htm

 

2 keepalived

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

 

3 nginx

Nginx 是一个很强大的高性能Web服务器和反向代理服务器

 

方案设计

1 nginx && keepalived

ceph rgw 高可用_第2张图片

 

 

2 lvs && keepalived

ceph rgw 高可用_第3张图片

 

3 对比总结

lvs与nginx同样在单点瓶颈的问题,但是从这两者的读写流程来看,当使用nginx时,client发送请求到real server,要经过nginx服务器,real server处理完请求得到结果,也要经过nginx服务器返回给客户端。当使用lvs时,client发送请求到real server,经过lvs服务器,real server处理完请求,real server将结果直接返回给客户端,不经过lvs服务器,所以当real server达到一定的数量级,lvs的性能要优于nginx,最终使用lvs && keepalived的方案。

 

环境搭建

1 测试环境介绍

node1:ceph-mon && ceph-osd && keepalived(backup) && lvs

node2:ceph-mon && ceph-osd && keepalived(master) && lvs

node3:ceph-osd && rgw

node4:ceph-mon && ceph-osd && rgw

node5:cosbench

2 测试工具

Cosbench

使用方式见附件文件

Cosbench压测工具使用

 

3 环境搭建

1 node1 && node2上配置keepalive && lvs

安装keepalived

wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

tar xf keepalived-1.2.7.tar.gz

cd keepalived-1.2.7/

./configure

make && make install

查看ip_vs支持

lsmod |grep ip_vs

ip_vs_rr               12600  0

ip_vs                 136674  2 ip_vs_rr

libcrc32c              12644  1 ip_vs

nf_conntrack          101024  7 ip_vs,ipt_MASQUERADE,nf_nat,nf_nat_ipv4,xt_conntrack,iptable_nat,nf_conntrack_ipv4

出现以上结果代表内核模块已经支持ipvs

 

2 修改配置文件

node1 (keepalived master配置文件)

global_defs {

   router_id LVS_DEVEL

}

vrrp_instance VI_1 {

    state MASTER

    interface bond1

    virtual_router_id 124

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

              10.192.52.70

    }

}

 

virtual_server 10.192.52.70 7480 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    #persistence_timeout 1

    protocol TCP

    advert_int 1

 

    real_server 10.192.52.62 7480 {

        weight 1

              TCP_CHECK { 

                connect_timeout 10 

                nb_get_retry 3 

                delay_before_retry 3 

                connect_port 7480 

        } 

    }

    real_server  10.192.52.63 7480 {

        weight 1

              TCP_CHECK { 

                connect_timeout 10 

                nb_get_retry 3 

                delay_before_retry 3 

                connect_port 7480 

        } 

    }

}

 

node2 (keepalived backup配置文件)

master不同的是

state MASTER à state BACKUP

priority 100 à priority 99

 

node1 && node2启动keepalived

systemctl start keepalived

 

 

3 配置real server

 

配置node3&& node4虚拟ip

vim set_real.sh

ifconfig $1:0 $2 netmask 255.255.255.0 up

route add -host $2 dev $1:0

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

 

chmod +x set_real.sh

./set_real.sh nic ip

 

功能测试

  1. 故障切换

kill掉其中的一个rgw

systemctl stop ceph-radosgw@rgw.node3

node2 (keepalive master)

ceph rgw 高可用_第4张图片

可以看到lvs的映射表发生了变化

IO没有发生中断和较大的波动

 

恢复这个rgw

node2 (keepalive master)

ceph rgw 高可用_第5张图片

可以看到lvs的映射表发生了变化

IO没有发生中断和较大的波动

 

2 keepalived保活

kill掉Master keepalived

查看node1(keepalived backup)log

node1的keepalived有backup状态变为master

IO没有发生中断和较大的波动

 

恢复Master keepalived

systemctl start keepalived

查看node1(keepalived backup)log

node1的keepalived由master状态变为backup

IO没有发生中断和较大的波动

 

ceph rgw 高可用_第6张图片

 

 

你可能感兴趣的