实验环境:
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的原理图:
Keepalived启动后会有三个进程:
父进程:内存管理,子进程管理
子进程:VRRP子进程
子进程:healthchecker子进程
由上图可知:
两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让它删除通告,并且去掉虚拟IP,转换为BACKUP状态;
实验架构图:
实验过程:
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的部署环境。
给我们的部署环境来起个名字,我这里叫"DEMO",openstack支持centos 6.5和Ubuntu 12.04.4两个版本,我们选择centos,我个人喜好redhat,熟悉了吧。6.0是juno版本,如果想部署Havana,那么得下载5.1.1,下一步
openstack部署环境有两个,其一是HA多节点,此模式是支持控制节点的HA,至少三个控制节点,为什么不是两个节点呢,这个是因为两个节点容易产生脑裂,这里不特别讲解了,袭击感兴趣就自己google一下。
由于我这里资源有限,选择其二,对节点模式,此模式是没有控制节点HA的,实际环境大家还是部署第一种HA模式,我这里等下会创建两个虚机:controller和compute
这里因为我们跑在虚机上,所以选择QEMU,这个是一款模拟器,运行起来比较慢,生产环境选择KVM,如果用来管理VMware环境,就选择vCenter,管理VMware必须通过vcenter,这是VMware定下的规矩,否则VMware还卖什么呢,但是openstack底层的hypervisor也是支持ESXI的,有兴趣的可以自己研究。
openstack的网络是非常负责的,指的专门研究,这里不多讲,默认选择VLAN模式够用了。
我这里选择默认,也就是把块存储和镜像都在本地,所以计算节点的本地磁盘最好划大一点。实际生产环境大家根据自己的环境选择,cinder可以使用ISCSI,我这里默认
这里我都不需要,有兴趣的可以研究下ceilometer这个计费系统,但是他需要单独的数据库节点,我这里三个都不选。
好了,完成了。
这里就是我们创建好的"demo"环境了,经过创建这个环境大家知道这是个什么环节了吧,它定义了我们部署openstack的各个功能组件和模式。
接下来要正式部署openstack了,那么我们要先准备两台虚机,以controller为例。打开virtualbox,单击"新建",取名"controller",类型选择"linux","redhat x64",下一步
我暂时两台虚机都划1G内存
现在创建
选择VDI
动态分配,节省空间,实际环境建议选择"固定大小"
空间不得小于40G建议,compute节点建议给更多,如果需要用到cinder的话
创建好的虚机
右键创建好的虚机,选择设置,单击系统,软驱可以去掉,由于openstack通过PXE引导安装所以这里务必要勾选网络这一项,保证虚机可以PXE启动。
网卡的设置和Fuel Master一般,这里不赘述了,网络的规划见前一篇博文。
按照controller同样创建compute虚机,也可以clone一台,配置相同。当然这台的内存需要跳大,因为后续创建云主机的时候要保证有充足的内存,我这里先创建虚机,暂时1G内存,大家知道这一点要。
没有评论:
发表评论