linux RHCS集群 高可用web服务器
RHCS集群,高可用服务器
高可用
  红帽集群套件,提供高可用性,高可靠性,负载均衡,快速的从一个节点切换到另一个节点(最多16个节点)
负载均衡
  通过lvs提供负载均衡,lvs将负载通过负载分配策略,将来自于客户端的请求分配到服务器节点
  当某个服务器节点无法提供服务,节点将被从集群中剔除
存储集群功能
  rhcs通过gfs文件系统提供存储集群功能
  gfs即global file system,允许多个服务同时读写一个单一的共享文件系统
  通过gfs消除在应用程序间同步数据的麻烦
  通过锁管理机制来协调和管理多个服务节点对同一文件系统的读写操作
RHCS组件
 核心组件:
  cman:集群管理器
  rgmanger:集群资源管理器
  corosync:集群间通信软件
  rcci:集群远程管理器
 附加组件:
  LVS
  GFS:红帽公司开发,gfs不能孤立存在,需要rhcs底层组支持
  CLVM:集群逻辑卷管理,lvm的扩展,允许集群使用lvm来管理共享存储
  iSCSI:新型存储技术
  GNBD:全局网络模块,gfs的一个补充组件,用于rhcs分配和管理共享存储
RHCS运行原理
  分布式集群管理器CMAN
    运行在全部节点上提供集群管理任务
    用于管理集群成员,消息和通知
    根据每个节点上的运行状态统计法定节点数作为集群是否存活的依据
  分布式锁管理器DLM
    是rhcs的一个底层基础构建,为集群提供了一个公用的锁运行机制
    运行在每个节点上,gfs通过dlm的锁机制来同步访问文件系统的元数据
    clvm通过dlm来同步更新数据到lvm卷和卷组
    避免了单个节点失败需要整体恢复的性能瓶颈
 栅设备FENCE
    集群中必不可少的一个组成部分,避免因不可预知的情况下造成的脑裂现象
    脑裂指由于节点间不能获知对方信息,都认为自己是主节点,从而出现资源竞争的情况
    主节点异常或宕机时,备机首先调用fence设备,将异常节点重启或从网络上隔离
    fence机制可通过电源fence或存储fence实现
——————————————————————————————————————————————————————————————————————
实例:搭建rhcs服务器
环境:两个节点参与集群,第三个节点提供共享存储
服务器:jiedian1
 eth0:192.168.4.1
 eth1:192.168.2.1
 eth2:201.1.1.1(对外提供服务)
 eth3:201.1.2.1
服务器:jiedian2
 eth0:192.168.4.2
 eth1:192.168.2.2
 eth2:201.1.1.2(对外提供服务)
 eth3:201.1.2.2
存储节点需要额外的硬盘,不需要配置对外提供服务的ip
服务器:cunchu
  eth0:192.168.4.3
  eth1:192.168.2.3
  eth3:201.1.2.3
  qemu-img create -f qcow2 /var/lib/libvirt/images/iscsi1.img 20G
配置yum
  [root@jiedian1 ~]# cat /etc/yum.repos.d/rhel6.repo(把所有的仓库做成yum,并把配置文件拷贝到其它主机的yum配置下)
  [rhel-6]
  name=Linux NSD
  baseurl=file:///root/myiso/
  ... ... ...
  [hig]
  name=Linux NSD
  baseurl=file:///root/myiso/HighAvailability/
  ... ... ...
  [loa]
  name=Linux NSD
  baseurl=file:///root/myiso/LoadBalancer
  ... ... ...
  [res]
  name=Linux NSD
  baseurl=file:///root/myiso/ResilientStorage
  ... ... ...
  [sca]
  name=Linux NSD
  baseurl=file:///root/myiso/ScalableFileSystem
  ... ... ...
  [root@jiedian1 ~]# scp /etc/yum.repos.d/rhel6.repo xxx.xxx.x.x:/etc/yum.repos.d/ 
 在存储端配置iSCIS
  [root@cunchu ~]# parted /dev/vdb(为存储磁盘分区)
  (parted) mklable gpt
  (parted) mkpart primary ext4 1M -1
  [root@cunchu ~]# yum -y install scsi-target-utils
  [root@cunchu ~]# vim /etc/tgt/targets.conf 
  <target iqn.2017-09.org.hydra.hydra007>
        backing-store /dev/vdb1
        initiator-address 192.168.4.1
        initiator-address 192.168.4.2
        initiator-address 192.168.2.1
        initiator-address 192.168.2.2
  </target>
  [root@cunchu ~]# /etc/init.d/tgtd start; chkconfig tgtd on
  [root@cunchu ~]# tgt-admin -s
  ... ...
  LUN: 1(有lun1就可以)
  ... ...
 在两个集群节点配置iSCSI客户端和多路径(两台做相同的操作)
  [root@jiedian1 ~]# yum -y install iscsi-initiator-utils
  [root@jiedian1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.3 --discover
  [root@jiedian1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.3 --discover
  [root@jiedian1 ~]# service iscsi restart
  [root@jiedian1 ~]# lsblk (查看块硬盘)
  sdb                           8:16   0   20G  0 disk 
  sda                           8:0    0   20G  0 disk 
  [root@jiedian1 ~]# chkconfig iscsid on
  [root@jiedian1 ~]# yum -y install device-mapper-multipath(安装多路径包)
  [root@jiedian1 ~]# mpathconf --user_friendly_names n(生成配置文件)
  [root@jiedian2 ~]# scsi_id --whitelisted --device=/dev/sda(获取wwid信息)
  1IET     00010001
  [root@jiedian1 ~]# vim /etc/multipath.conf 
  defaults {
          user_friendly_names no
  getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
  }
  ... ...
  multipaths {
       multipath {
          wwid    "1IET     00010001"(填写wwid-硬件信息)
          alias   mpatha(别名)
       }
  }
  [root@jiedian1 ~]# /etc/init.d/multipathd start;chkconfig multipathd on
 如果集群节点上安装着NetworkManager服务则需要关闭NetworkManager服务
 为三台服务器都配置名称解析
  [root@jiedian1 ~]# vim /etc/hosts
  201.1.1.1       jiedian1.public.hydra.cn
  201.1.2.1       jiedian1.private.hydra.cn       jiedian1
  201.1.1.2       jiedian2.public.hydra.cn
  201.1.2.2       jiedian2.private.hydra.cn       jiedian2
  201.1.2.3       jiedian3.private.hydra.cn       jiedian3
  201.1.2.254     host.private.hydra.cn           host
 在两台集群节点上安装ricci(在两台节点都做相同的操作)
  [root@jiedian1 ~]# yum -y install ricci
  [root@jiedian1 ~]# echo 'redhat' | passwd --stdin ricci(ricci是链接集群的工具,设置密码比较安全)
  [root@jiedian1 ~]# /etc/init.d/ricci start;chkconfig ricci on
 安装luci(随便在哪一台装都可以,最好不要安装到集群节点上)
  [root@cunchu ~]# yum -y install luci
  [root@cunchu ~]# /etc/init.d/luci start;chkconfig luci on
  web browser to https://cunchu:8084(启动后会给一个url地址,在哪台装的主机名就是哪台,访问web页面输入ip就可以)
  [root@cunchu ~]# firefox https://201.1.2.3:8084
  页面出来后,输入此台服务器的root及密码
  点击manage cl usters》create》
 集群发生的错误
  Authentication failed 身份验证错误,ricci密码有问题
  ssl connection 连接错误,检查ricci服务是否运行,防火墙,selinux
  安装完毕后,有些节点异常,显示红色,把cman和rgmanager设置为开机自启后reboot
  安装完毕后,web页面中无任何显示,在web页面中add
 在物理机配置fence,并生成配置文件后启动服务
  fence-virtd fence-virtd-libvirt fence-virtd-multicast
  [root@room1pc01 ~]# yum -y install fence-virtd fence-virtd-libvirt fence-virtd-multicast
  [root@room1pc01 ~]# fence_virtd -c
  ... 
  Interface [none]: public2(改为public2)
  Backend module [checkpoint]: libvirt(改为libvirt)
  ...
  [root@room1pc01 ~]# mkdir /etc/cluster(创建密钥文件)
  [root@room1pc01 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1(创建密钥文件随机码)
  [root@room1pc01 ~]# scp /etc/cluster/fence_xvm.key 201.1.2.1:/etc/cluster/
  [root@room1pc01 ~]# scp /etc/cluster/fence_xvm.key 201.1.2.2:/etc/cluster/
  [root@room1pc01 ~]# /etc/init.d/fence_virtd start; chkconfig fence_virtd on
 在web页面配置
  [root@cunchu ~]# firefox https://201.1.2.3:8084
  点击 fence devices》add》下拉列表选择自己的fence
  点击 nodes》选择主机》add fence method》创建好后点击add fence instnce
  Domain这里要填全名rh6_node01
  点击 failover domains
搭建高可用web集群
资源:apache,只需要安装即可 不要启动,共享存储 使用iSCSI提供的共享存储,ip地址 对外提供服务 201.1.1.100
安装apache(两台节点做相同的操作,分区格式化在单独一台做即可,它会共享出去)
  [root@jiedian1 ~]# yum -y install httpd
  [root@jiedian1 ~]# parted /dev/mapper/mpatha 
  (parted) mklabel gpt                                                      
  (parted) mkpart primary ext4 1M 1024M
  [root@jiedian1 ~]# partprobe(加载分区)
  [root@jiedian1 ~]# mkfs.ext4 /dev/mapper/mpathap1 
  [root@jiedian1 ~]# mount /dev/mapper/mpathap1 /var/www/html/
  [root@jiedian1 ~]# vim /var/www/html/index.html
  hydra
  [root@jiedian1 ~]# umount /var/www/html/(写上页面后要卸载,谁挂载由集群决定)
 在web页面配置
  [root@cunchu ~]# firefox https://201.1.2.3:8084
  点击resources》add》apache》naem随便写,其他的都删除,最后一行写3
  点击resources》add》ip addres》netmask必须写24
  点击resources》add》filesystem
  点击service groups》add》
  firefo http://201.1.1.100/(测试验证)
——————————————————————————————————————————————————————————————————————————————————————————
linux RHCS集群 高可用web服务器的更多相关文章
- 集群高可用之lvs+keepalive
		集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ... 
- Rabbitmq集群高可用测试
		Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ... 
- openstack pike 集群高可用  安装 部署   目录汇总
		# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ... 
- 浅谈MySQL集群高可用架构
		前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ... 
- bitmq集群高可用测试
		Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ... 
- Eureka 集群高可用配置.
		SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip-address} instance-i ... 
- mysql集群高可用架构
		前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ... 
- hadoop+zookeeper集群高可用搭建
		hadoop+zookeeper集群高可用搭建 Senerity 发布于 2 ... 
- RabbitMQ从零到集群高可用(.NetCore5.0) -高可用集群构建落地
		系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ... 
随机推荐
- MongoDB之副本集
			MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ... 
- IDEA Tomcat:Failed to initialize end point associated with ProtocolHandler
			发现Tomcat的日志中出现这样的错误,一般都是端口被占用了.在任务管理器中检查是否有其他的应用在使用该端口 Failed to initialize end point associated wit ... 
- Eclipse去掉对JS文件的Validation
			Eclipse不去掉对JS文件的Validation,编译时会花费很长的时间,有时甚至会导致编译失败. 可以按照如下的方式去掉对JS文件的Validation. 一.window->prefer ... 
- JDK,JRE,JVM的区别与联系
			JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ... 
- Swing EDT引起的客户端卡死
			最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁: Found on ... 
- web前端性能优化问题
			常用的几大优化解决: 页面内容的优化 减少http请求 途径: 1>启用http/2--越来越多的浏览器都开始支持 HTTP/2.HTTP/2 为同一服务器的并发连接问题带来了很多好处.换句话说 ... 
- pycharm导入模块的时候遇到的两个错误
			1.from 包 import AES import后面一定是一个空格!!!!! 2.包的导入 上面多了一层报错 错误的原因是最外层多了一个pythonProject目录.改成下面的ok. 原因大佬这 ... 
- 理解Java Integer的缓存策略【转】
			本文由 ImportNew - 挖坑的张师傅 翻译自 javapapers.欢迎加入翻译小组.转载请见文末要求. 本文将介绍 Java 中 Integer 缓存的相关知识.这是 Java 5 中引入的 ... 
- img alt与title的区别
			前端 alt是图片加载不出来时候,对图片的文本替代 title 是鼠标放在图片上时,对图片的进一步说明 seo 搜索引擎对图片意思的理解主要靠 alt 
- 关于ruby -gem无法切换淘宝源
			ruby官网提供的 淘宝的gem源 不起作用 https://ruby.taobao.org/ taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 http://gems. ... 
