2015年1月20日星期二

LVS+Keepalived高可用负载均衡集群架构

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
LVS+Keepalived高可用负载均衡集群架构  阅读原文»

LVS+Keepalived高可用负载均衡集群架构

实验环境:

LVS和keepalived介绍:

1.keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。

使用keepalived构建LVS群集更加简便易用,主要优势体现在:

对LVS负载调度器实现热备切换,提高可用性;

对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

2.在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。

3.通过LVS+Keepalived构建的LVS集群,LVS负载均衡用户请求到后端tomcat服务器,Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Keepalived简介

什么是Keepalived:keepalived可以实现服务的高可用或热备,用来防止单点故障的问题;而Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余;Keepalived就是使用VRRP协议来实现高可用的;下面一起来看一下Keepalived的原理图:

wKiom1S7wmjRUEvwAACUn7rdsas360.gif

Keepalived启动后会有三个进程:

父进程:内存管理,子进程管理

子进程:VRRP子进程

子进程:healthchecker子进程

由上图可知

两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让它删除通告,并且去掉虚拟IP,转换为BACKUP状态;

实验架构图:

wKiom1S7wpvCKIDwAAKaDYZ9HiE764.jpg

实验过程:

HA高可用集群构建前提:

1.proxy和proxy2节点时间必须同步;

建议使用ntp协议进行;

参考博客:http://sohudrgon.blog.51cto.com/3088108/1598314

2、节点之间必须要通过主机名互相通信;

建议使用hosts文件;

通信中使用的名字必须与其节点为上"uname -n"命令展示出的名字保持一致;

  [root@proxy ~]# cat /etc/hosts  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  172.16.0.1  server.magelinux.com server  172.16.31.52 proxy.stu31.com proxy  172.16.31.53 proxy2.stu31.com proxy2  172.16.31.50 tom1.stu31.com tom1  172.16.31.51 tom2.stu31.com tom2  

3、节点之间彼此root用户能基于ssh密钥方式进行通信;

  节点proxy:  # ssh-keygen -t rsa -P ""  # ssh-copy-id -i .ssh/id_rsa.pub proxy2  节点proxy2:  # ssh-keygen -t rsa -P ""  # ssh-copy-id -i .ssh/id_rsa.pub proxy  

测试ssh无密钥通信:

  [root@proxy ~]# date ; ssh proxy2 date  Sat Jan 17 15:29:26 CST 2015  Sat Jan 17 15:29:26 CST 2015  

一.配置安装LVS+keepalived

1.在Master与Backup服务器上分别安装Ipvsadm、Keepalived软件包、这里使用的是yum安装方式

  # yum install -y keepalived ipvsadm  

注释:这里安装Ipvsadm工具主要是为了查看lvs规则使用,不安装ipvsadm工具也能成功配置规则,但不方便;

2.修改keepalived配置文件

keepalived的文件路径/etc/keepalived/keepalived.conf

修改Master节点proxy的主配置文件

  [root@proxy ~]# vim /etc/keepalived/keepalived.conf  ! Configuration File for keepalived  global_defs {     notification_email {      #设置报警通知邮件地址,可以设置多个      root@localhost     }     notification_email_from admin@stu31.com  #设置邮件的发送地址     smtp_server 127.0.0.1        #设置smtp server的地址,该地址必须是存在的     smtp_connect_timeout 30      #设置连接smtp server的超时时间     router_id LVS_DEVEL          #运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息  }  vrrp_instance VI_1 {            #定义VRRP实例,实例名自定义      state MASTER                #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器      interface eth0              #指定HA监测的接口      virtual_router_id 51        #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样      priority 100                #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器      advert_int 1                #设置主备之间同步检查的时间间隔单位秒      authentication {            #设置验证类型和密码          auth_type PASS          #验证类型有两种{PASS|HA}          auth_pass oracle        #设置验证密码,在一个实例中主备密码保持一样      }      virtual_ipaddress {         #定义虚拟IP地址,可以有多个,每行一个      172.16.31.188      }  }  virtual_server 172.16.31.188 {    #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔      delay_loop 6                     #设置健康状态检查时间,单位为秒      lb_algo rr                       #设置负载高度算法,rr为轮询      lb_kind DR                       #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种      nat_mask 255.255.0.0             #设置掩码      persistence_timeout 50           #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案      protocol TCP                     #指定转发协议类型可以设置{TCP|UDP}两种      real_server 172.16.31.50 80 {    #后端服务器节点,需要指定Real_server的IP与端口,用空格分隔          weight 1                     #配置服务节点的权重,数字越大,权重越高          HTTP_GET {                   #设置检测Realserver的方式为http协议              url {                path /            status_code 200       #设定返回状态码为200表示Realserver是存活的              }              connect_timeout 3        #设置响应超时时间              nb_get_retry 3           #设置超时重试次数              delay_before_retry 3     #设置超时后重试间隔          }      }      real_server 172.16.31.51 80 {          weight 1          HTTP_GET {              url {                path /            status_code 200              }              connect_timeout 3              nb_get_retry 3              delay_before_retry 3          }      }  }  

3.将Master服务器proxy节点上的主配置文件拷贝到Backup服务器proxy2节点稍作修改

  # scp /etc/keepalived/keepalived.conf proxy2:/etc/keepalived/  ######修改如下两项  [root@proxy2 ~]# vim /etc/keepalived/keepalived.conf  state BACKUP  priority 99  

4.启动两台服务器上的Keepalived服务并设置为开机自启动

  # chkconfig --add keepalived ; ssh proxy2 "chkconfig --add keepalived"  # chkconfig  keepalived on ; ssh proxy2 "chkconfig keepalived on"  # chkconfig --list keepalived; ssh proxy2 "chkconfig --list keepalived"  keepalived      0:off   1:off   2:on    3:on    4:on    5:on    6:off  keepalived      0:off   1:off   2:on    3:on    4:on    5:on    6:off  

启动服务:

  # 
使用Fuel安装OpenStack juno之二安装OpenStack  阅读原文»

好了,前面我们已经安装好了Fuel Master,现在开始准备安装OpenStack,安装完成后就可以看到OpenStack的主界面了。

继续昨天,我们进入到Fuel UI,然后"新建OpenSTack环境"来创建openstack的部署环境。

wKiom1S8vwXxb7zDAAHJLRotY4U284.jpg

给我们的部署环境来起个名字,我这里叫"DEMO",openstack支持centos 6.5和Ubuntu 12.04.4两个版本,我们选择centos,我个人喜好redhat,熟悉了吧。6.0是juno版本,如果想部署Havana,那么得下载5.1.1,下一步

wKioL1S8v9jw8p2nAAHc8MLq80c043.jpg

openstack部署环境有两个,其一是HA多节点,此模式是支持控制节点的HA,至少三个控制节点,为什么不是两个节点呢,这个是因为两个节点容易产生脑裂,这里不特别讲解了,袭击感兴趣就自己google一下。

wKiom1S8vwWRP0FbAAGBEkFqO0c354.jpg

由于我这里资源有限,选择其二,对节点模式,此模式是没有控制节点HA的,实际环境大家还是部署第一种HA模式,我这里等下会创建两个虚机:controller和compute

wKioL1S8v9iikf0AAAFn1D7Jhoo508.jpg

这里因为我们跑在虚机上,所以选择QEMU,这个是一款模拟器,运行起来比较慢,生产环境选择KVM,如果用来管理VMware环境,就选择vCenter,管理VMware必须通过vcenter,这是VMware定下的规矩,否则VMware还卖什么呢,但是openstack底层的hypervisor也是支持ESXI的,有兴趣的可以自己研究。

wKiom1S8vwbyNqghAAFYOF-YoIg810.jpg

openstack的网络是非常负责的,指的专门研究,这里不多讲,默认选择VLAN模式够用了。

wKioL1S8v9jRtIcCAAKnzwmy9fA274.jpg

我这里选择默认,也就是把块存储和镜像都在本地,所以计算节点的本地磁盘最好划大一点。实际生产环境大家根据自己的环境选择,cinder可以使用ISCSI,我这里默认

wKiom1S8vwayVn99AAGllChZHz4778.jpg

这里我都不需要,有兴趣的可以研究下ceilometer这个计费系统,但是他需要单独的数据库节点,我这里三个都不选。

wKioL1S8v9mAFRT6AAGzFzMPSTk225.jpg

好了,完成了。

wKiom1S8vwfCEU_IAAEzHrlllZY272.jpg

这里就是我们创建好的"demo"环境了,经过创建这个环境大家知道这是个什么环节了吧,它定义了我们部署openstack的各个功能组件和模式。

wKiom1S8vwnSDP8xAANaDD4_AmM244.jpg

接下来要正式部署openstack了,那么我们要先准备两台虚机,以controller为例。打开virtualbox,单击"新建",取名"controller",类型选择"linux","redhat x64",下一步

wKioL1S8v93ClUCPAAIlX4Ii6mg224.jpg

我暂时两台虚机都划1G内存

wKiom1S8vwrgG45bAADg0Ysq31I673.jpg

现在创建

wKioL1S8v92hoTQUAAFYdY6zptk421.jpg

选择VDI

wKiom1S8vwuhBP_pAAFCPCVugD8399.jpg

动态分配,节省空间,实际环境建议选择"固定大小"

wKioL1S8v-GjYgeqAAFa8yVELCU544.jpg

空间不得小于40G建议,compute节点建议给更多,如果需要用到cinder的话

wKiom1S8vw-SG7_sAAEf_np9jJQ230.jpg

创建好的虚机

wKioL1S8v-OD9W1lAAKqBUJRyZo711.jpg

右键创建好的虚机,选择设置,单击系统,软驱可以去掉,由于openstack通过PXE引导安装所以这里务必要勾选网络这一项,保证虚机可以PXE启动。

wKiom1S8vxGTiBaVAAHHT8q85_0609.jpg

网卡的设置和Fuel Master一般,这里不赘述了,网络的规划见前一篇博文。

wKioL1S8v-SQLxfZAAHaOk3P8NE803.jpg

wKiom1S8vxOA-Wo4AAHWUvOgBMQ456.jpg

wKioL1S8v-bA_3EdAAHHs7lIc5Q443.jpg

按照controller同样创建compute虚机,也可以clone一台,配置相同。当然这台的内存需要跳大,因为后续创建云主机的时候要保证有充足的内存,我这里先创建虚机,暂时1G内存,大家知道这一点要。

没有评论:

发表评论