通过 红帽 rhcs 组件进行 nginx 的负载均衡

注:不支持在集群节点中使用NetworkManager。如果已经在集群节点中安装了 NetworkManager,应该删除或者禁用该程序。

1. RHCS 集群管理介绍

1. RHCS集群简介

RHCS(Red Hat Cluster Suite)集群是红帽官方提供的子集群套件,它整合了高可用集群、负载均衡集群、存储集群,从而为用户提供了完整的一套从前端到应用到存储的集群解决方案。通过RHCS集群提供的集群服务,可以为web,数据库等关键业务提供高效,稳定的运行环境。

2. RHCS的核心功能

  1. 负载均衡

    RHCS的负载均衡集群通过LVS(Linux Virtual Server)来实现其功能,LVS是由前端的调度器与后端的RS节点组成,客户端的访问请求通过调度器根据算法及集群类型的不同将其调度至集群的RS节点,由调度器调度到的RS节点响应客户端请求。同时,LVS提供了故障转移功能,当集群中的RS节点中有任意一个或多个出现故障时,LVS会自动将故障节点下线,将分配到故障节点的客户端请求移到无故障节点运行;故障节点修复,又将重新加入集群继续工作,从而保证了服务的不中断运行。RHCS集群类型有DR,NAT,TUN,FULLNAT,可为各种复杂的网络环境提供不同的解决方案。

  2. 高可用

    RHCS的高可用集群中的高可用服务在无故障情况下,可运行于任意节点,通过定义组资源或者各种约束关系,将提供同一类服务的资源运行在同一个节点,当提供服务的节点故障或分裂时,集群可通过仲裁设备(非必须)判定资源运行于哪个节点,即拥有法定票数多的一方继续运行集群服务,而故障的或不拥有法定票数的一方则作下线处理。保证了服务的不中断运行。

3. RHCS的核心功能

  • 集群管理器CMAN
    Cluster Manager,简称CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。CMAN用于管理集群成员、传递节点间心跳信息。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。cman之上有ccs和fencs两个组件。
  • 资源组管理器rgmanager
    通过定义的集群资源,来管理这些资源,被管理的资源包括故障切换域的定义、资源(如 IP 地址)和服务。它也定义了群集服务和群集服务的故障切换行为。
  • 集群配置文件管理CCS
    其默认配置文件为/etc/cluster/cluster.conf,运行于集群中各节点,当某一节点的配置信息发生改变时,使同一集群内的其他节点的配置文件发生相应变化。
  • 保护设备Fencs
    当 CMAN 决定某个节点已经发生故障,它将告知其他群集基础结构组件。在收到通知后,fenced 将保护(fence)故障节点。其他群集基础结构组件将决定采取什么行动,也就是说,它们执行任何必需的恢复。例如,当 DLM 和 GFS 被告知节点故障时,将暂停活动,直到它们检测到 fenced 已经完成对故障节点的保护。当确认故障节点已经被保护时,DLM 和 GFS 会执行恢复。DLM 释放对失败节点的锁定;GFS 恢复故障节点的日志。GNBD也是Fencs的一个组件。
  • 分布式锁管理器DLM
    分布式锁管理器管理集群中挂载使用GFS的节点来同步它们对共享资源的访问,它运行于每一个集群节点,是集群中所有节点共享锁文件。CLVM使用锁管理器来同步对LVM卷和卷组(也对共享存储)的更新。
  • 集群文件系统GFS
    GFS 是允许集群内所有节点可同时访问某个共享的块设备的集群文件系统。GFS 是一个原生(native)文件系统,它直接和 Linux 内核文件系统接口的 VFS 层进行通信。GFS 使用分布式元数据和多个日志来优化群集操作。要维护文件系统的完整性,GFS 使用一个锁管理器来协调 I/O。当节点修改了 GFS 文件系统上的数据,这个改动马上为使用这个文件系统的其他群集节点可见。同时,GFS使整个群集只需安装一次应用程序或补丁,并可使集群内多个节点的服务对数据可以并行读/写操作。
  • 集群配置管理工具Conga
    Conga是新的基于网络的集群配置工具。它是web界面管理的,由luci和ricci组成,luci可以安装在一台独立的计算机上,也可安装在节点上,用于配置和管理集群,ricci是一个代理,安装在每个集群节点上,luci通过ricci和集群中的每个节点通信。

2. 进行集群配置

1 为各 nginx 节点服务器进行 Conga组件安装

另一个节点也进行同样安装

进行 ricci 密码的设定

开启ricci服务,并设置开机自启

开启 luci 服务,其端口为 8084 ,可通过 访问 https://172.25.21.11:8084 来进行 luci 服务的登录

进入登录页面,用户名密码为luci 所在用户的用户名密码

登录成功如下:

2. 进行集群配置

1 添加集群:

添加各个节点的名称,密码,为ricci 密码,并勾选相应的选项


添加成功如下:

添加成功后,可查看节点状态

2 进行fence的安装

再次强调一下 fence

每个节点之间互相发送探测包进行判断节点的存活性。一般会有专门的线路进行探测,这条线路称为“心跳线”(上图直接使用eth0线路作为心跳线)。假设node1的心跳线出问题,则node2和node3会认为node1出问题,然后就会把资源调度在node2或者node3上运行,但node1会认为自己没问题不让node2或者node3抢占资源,此时就出现了脑裂(split brain)。
此时如果在整个环境里有一种设备直接把node1断电,则可以避免脑裂的发生,这种设备叫做fence或者stonith(Shoot The Other Node In The Head爆头哥)。
在物理机里virsh是通过串口线管理guestos的,比如virsh destroy nodeX,这里我们把物理机当成fence设备。

在物理机安装 fence 相关组件:

 Yum install fence-* -y


安装完成,执行下述操作

 fence_virtd -c 进行对配置文件内容的选定




建立密钥,并建立放置其的目录

 mkdir /etc/cluster


重启服务:

将密钥传递给各节点

 Scp /etc/cluster/fence_xvm.key root@172.25.21.11:/etc/clusterScp /etc/cluster/fence_xvm.key root@172.25.21.12:/etc/cluster

3 添加 fence 设备


为节点添加 fecne 方法(为两个节点均添加)

为方法添加实例

实例的域名是对应节点的 UUID

添加成功后如下:

4 添加故障切换域:



添加成功后:

5 为集群添加资源

添加VIP

添加启动脚本
Nginx 启动脚本需要自己编写,并移动到 /etc/init.d下,并赋予可执行权限

6 为集群添加服务组,添加服务组之前,关闭两节点的 nginx 服务

否则无法正常启动服务组,因为此服务集群工作类似于原子性,原子性指事务的一个完整操作。操作成功则提交,失败则回滚,即一件事要做就做完整,要么就什么都不做

为服务组添加资源

全局资源 ip addres 和 scripts 脚本

提交后步骤如下
服务组添加成功后选择start 启动

启动之后,显示如下,在设定优先级高的结点上启动

在节点启动后查看如下:

可进行节点切换,将服务转移到另一个节点

  • 其高可用体现在:
    启动服务组后,自动启动服务组运行所在节点的nginx服务,若是改节点服务宕掉,自动将服务切换到另一个节点,
    Fence 会将宕掉的主机进行断电,服务会全部移动到另一个节点上,宕掉的节点回再次启动


切换服务时:

进行nginx 负载均衡时,节点切换的间隔,和切换后后端服务器,nginx负载均衡的效果

红帽 rhcs 组件实现 nginx 高可用负载均衡相关推荐

  1. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  2. RHCS套件实现高可用负载均衡集群(三)——共享存储

    注:此博文在博文"RHCS套件实现高可用负载均衡集群(二)"的基础上完成 实验开始前设置实验环境 target端配置--server3 [root@server3 ~]# yum ...

  3. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  4. RHCS套件的高可用负载均衡和本地数据存储

    一  高可用负载均衡 1. 在server1和server4端安装nginx,并建立用户nginx,在/etc/secuirty/limit.conf中设定限制,usr/local/nginx/con ...

  5. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

  6. Keepalived+Nginx实现高可用负载均衡集群

    转载自 https://www.cnblogs.com/mrlapulga/p/6857294.html 一 环境介绍 1.操作系统 CentOS Linux release 7.2.1511 (Co ...

  7. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  8. Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

    Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Kee ...

  9. RHCS套件实现高可用负载均衡集群(二)——Fence设备

    注:此博文在博文"套件实现高可用负载均衡集群(一)"的基础上完成 环境: 物理机:172.25.54.250,作为fence server1:172.25.54.1 , serve ...

最新文章

  1. 机载雷达发展简史:从蝙蝠到机载相控阵
  2. c语言文件操作中换行,关于文件操作,碰到空格就换行
  3. matlab 中括号
  4. 数的划分(信息学奥赛一本通-T1440)
  5. 质量超高的UI素材站!推荐UI\UX设计师
  6. mysql查看和调整最大连接数
  7. 将 Azure VM 迁移到 Azure 中的托管磁盘
  8. GitChat · 前端 | JavaScript 进阶之 Vue.js + Node.js 入门实战开发
  9. 概率论的学习和整理10:古典概型 和 二项分布(N重伯努利试验)
  10. 宽带连接错误 651
  11. STM32+ESP8266单片机嵌入式物联网教程
  12. CISCO数据中心虚拟化之VSS技术和配置
  13. MyBatis SQL里的大于号、小于号
  14. 引起C运行时错误R6034的原因和解决方法
  15. 解决Mac 80端口被占用
  16. linux系统下 安装docker
  17. 小白教程:快速在IDEA上创建包和类(java)
  18. Hbase学习之——协处理Coprocessor的使用
  19. 新版标准日本语中级_第二十八课
  20. Android基于局域网的socket通信

热门文章

  1. 服务器为什么能够稳定可靠运行?
  2. 07 爬取知乎张佳玮文章
  3. 最大值和最小值(I)
  4. 最常问的网络基础面试问题整理
  5. 广州电子厂房净化工程_广州车间厂房净化工程哪家好优惠报价“本信息长期有效”...
  6. 【强化学习实战-04】DQN和Double DQN保姆级教程(2):以MountainCar-v0
  7. 计算机毕业设计Java智能家电商城(系统+源码+mysql数据库+lw文档)
  8. thumbnailator图片压缩和碰见的问题修复
  9. (Java)通讯录的实现
  10. c语言延时变频1kHz和2kHz,1高频电子线路复习题及答案