期中集群架构-第十一章-keepalived高可用集群章节
======================================================================
01. 作业题一说明:
先进行企业案例需求梳理:
 1 当用户请求www.etiantian.org/upload/xx 地址时,实现由upload上传服务器池处理请求。
 2 当用户请求www.etiantian.org/static/xx 地址时,实现由静态服务器池处理请求。
 3 除此以外,对于其他访问请求,全都由默认的动态服务器池处理请求。
用户请求(URI) 处理请求服务器 站点目录 功能
   /upload 10.0.0.8:80 html/www/upload upload服务器
   /static 10.0.0.7:80 html/www/static static静态服务器
   / 10.0.0.9:80 html/www 默认

解题方法:
1)完成nginx网站服务器配置
第一个里程:创建测试环境
   # 10.0.0.8 主机上创建upload目录,然后生成网站测试页面文件
   cd /application/nginx/html/www/
   mkdir upload
   cp oldboy.html upload/

# 10.0.0.7 主机上创建static目录,然后生成网站测试页面文件
   cd /application/nginx/html/www/
   mkdir static
   cp oldboy.html static/

# 10.0.0.9 主机上创建默认测试页面文件即可

第二个里程:利用lb01进行访问测试
   # 测试10.0.0.8访问是否正常
   curl -H host:www.etiantian.org 10.0.0.8/upload/oldboy.html
   web02 www.etiantian.org

# 测试10.0.0.7访问是否正常
   curl -H host:www.etiantian.org 10.0.0.7/static/oldboy.html
   web01 www.etiantian.org   # 测试10.0.0.9访问是否正常

curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
   web03 www.etiantian.org

2)完成nginx反向代理服务器配置
第一个里程:配置upstream模块信息
   upstream upload {
      server 10.0.0.8:80;
   }
   upstream static {
      server 10.0.0.7:80;
   }
   upstream default {
      server 10.0.0.9:80;
   }

第二个里程:配置proxy_pass模块信息
   server {
      listen 80;
      server_name www.etiantian.org;
      root html;
      index index.html index.htm;
      location / {
         proxy_pass http://default;
         proxy_set_header host $host;
         proxy_set_header X-Forwarded-For $remote_addr;
   }
   location /upload {
      proxy_pass http://upload;
      proxy_set_header host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
   }
   location /static {
      proxy_pass http://static;
      proxy_set_header host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
   }
}

作业题二说明:
根据用户请求客户端软件,显示不同页面信息

解决方法:
1)nginx网站服务器配置
第一个里程:创建测试环境
   # 10.0.0.8 主机上创建upload目录,然后生成网站测试页面文件
   cd /application/nginx/html/www/
   cat oldboy.html

# 10.0.0.7 主机上创建static目录,然后生成网站测试页面文件
   cd /application/nginx/html/www/
   cat oldboy.html

# 10.0.0.9 主机上创建默认测试页面文件即可
   cd /application/nginx/html/www/
   cat oldboy.html

测试访问:
[root@lb01 conf]# curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
web01 www.etiantian.org
[root@lb01 conf]# curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
web02 www.etiantian.org
[root@lb01 conf]# curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
web03 www.etiantian.org

2)nginx反向代理服务器配置
 第一个里程:配置upstream模块信息
   upstream iphone {
      server 10.0.0.8:80;
   }
   upstream android {
      server 10.0.0.7:80;
   }
   upstream pc {
      server 10.0.0.9:80;
   }

第二个里程:配置proxy_pass模块信息
server {
   listen 80;
   server_name www.etiantian.org;
   root html;
   index index.html index.htm;
      location / {
         if ($http_user_agent ~* "iphone") {
         proxy_pass http://iphone;
   }
         if ($http_user_agent ~* "android") {
         proxy_pass http://android;
   }
         proxy_pass http://pc;
         proxy_set_header host $host;
         proxy_set_header X-Forwarded-For $remote_addr;
   }
}

02. keepalived服务概念说明
keepalived软件能干什么?
   Keepalived软件起初是专为LVS负载均衡软件设计的,
   用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能

Keepalived软件主要是通过VRRP协议实现高可用功能的。
   VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,
   VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,
   整个网络可以不间断地运行

keepalived软件工作原理?(重点)
原理
1)VRRP协议,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,
      VRRP的出现是为了解决静态路由的单点故障。
2)VRRP是用过IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信的。
3)工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,
      就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,
      但一般Keepalived系统运维工作中都是一对。

keepalived软件主要功能?
①. 管理LVS负载均衡软件
②. 实现对LVS集群节点健康检查功能
③. 作为系统网络服务的高可用功能

03. 部署keepalived高可用服务:
1)确认反向代理服务是否工作正常
第一个里程:在lb01/lb02上测试web服务器是否可以正常
   curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
   curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
   curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
   curl -H host:bbs.etiantian.org 10.0.0.7/oldboy.html
   curl -H host:bbs.etiantian.org 10.0.0.8/oldboy.html
   curl -H host:bbs.etiantian.org 10.0.0.9/oldboy.html

第二个里程:在浏览器上测试访问lb01/lb02
   解析hosts文件,将域名解析为10.0.0.5,进行测试访问
   解析hosts文件,将域名解析为10.0.0.6,进行测试访问
   scp -rp /application/nginx/conf/nginx.conf 10.0.0.6:/application/nginx/conf/ ---测试前同步lb01和lb02配置文件

2)安装部署高可用keepalived服务
第一个里程:安装keepalived服务软件
yum install -y keepalived

第二个里程:编写keepalived配置文件
vim /etc/keepalived/keepalived.conf
man keepalived.conf --- 配置文件说明信息
配置文件结构:
GLOBAL CONFIGURATION    --- 全局配置(*)
VRRPD CONFIGURATION     --- vrrp配置(*)
LVS CONFIGURATION           --- LVS服务相关配置

全局配置

vrrp配置

lb01主负载均衡器配置
global_defs {
router_id lb01
}

vrrp_instance gorup01 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
/etc/init.d/keepalived reload

lb02配置信息
global_defs {
router_id lb02
}

vrrp_instance group01 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
/etc/init.d/keepalived reload

3)进行测试访问

ip a命令测试lb01 看到vip地址为10.0.0.3 当关掉lb01服务器模拟宕机

则lb02生成10.0.0.3

04. 部署keepalived高可用服务问题
同时在keepalived高可用集群中,出现了两个虚拟IP地址信息,这种情况就称为脑裂

脑裂情况出现原因:
1. 心跳线出现问题
   卡配置有问题
   交换设备有问题
   线缆连接有问题
2. 有防火墙软件阻止问题
3. virtual_router_id配置数值不正确
总之:只要备服务器收不到组播包,就会成为主,而主资源没有释放,就会出现脑裂

利用shell脚本实现监控管理:
备用设备有VIP就是表示不正常
   01. 真正实现主备切换
   02. 出现脑裂情况了

#!/bin/bash
   check_info=$(ip a|grep -c 10.0.0.3)
   if [ $check_info -ne 0 ]
   then
   echo "keepalived server error!!!"
   fi
写入定时任务
05. 实现nginx反向代理监控虚拟IP地址
1)编写nginx反向代理配置 只监听虚拟地址 防止其他用户通过ip入侵服务器
server {
   listen 10.0.0.3:80;
   server_name www.etiantian.org;
   root html;
   index index.html index.htm;
   location / {
      proxy_pass http://oldboy;
      proxy_set_header host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
   }
}
server {
   listen 10.0.0.3:80;
   server_name bbs.etiantian.org;
   root html;
   index index.html index.htm;
   location / {
      proxy_pass http://oldboy;
      proxy_set_header host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
   }
}
/application/nginx/sbin/nginx -s stop
/application/nginx/sbin/nginx

netstat -lntup|grep nginx
tcp 0 0 10.0.0.3:80 0.0.0.0:* LISTEN 53334/nginx
默认只能监听本地有的地址 不能监听虚拟地址
实现监听本地网卡上没有的IP地址 修改内核

此时Windows主机再解析10.0.0.5就不行了必须是.3
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p

06. 将keepalived服务和反向代理nginx服务建立联系

当关掉Nginx时虚ip还在主负载上,原因是Nginx停了keepalived还是运行着的所以vip还在主上

配置nginx反向代理服务停止,keepalived服务也停止

1)编写脚本
   #!/bin/bash
   web_info=$(ps -ef|grep [n]ginx|wc -l)
   if [ $web_info -lt 2 ]
   then
   /etc/init.d/keepalived stop
   fi

2)运行脚本,实现监控nginx服务
   编辑keepalived服务配置文件 定义脚本函数 要放在全局配置和vrrp中间

vrrp_script check_web {
   #定义一个监控脚本,脚本必须有执行权限
   script "/server/scripts/check_web.sh"
   #指定脚本间隔时间
   interval 2
   #脚本执行完成,让优先级值和权重值进行运算,从而实现主备切换
   weight 2
   }

track_script {
   check_web
   }

或者脚本写入定时任务
   chmod +x check_web.sh --- 修改脚本可执行权限
测试 关掉Nginx  随即keepalived也关闭了
07. 企业中实现高可用集群架构中双主配置(互为主备配置)

lb01
vrrp_instance
   priority
   advert_int 1
   authentication {
      auth_type PASS
      auth_pass 1111
   }
virtual_ipaddress {
   10.0.0.4/24 dev eth0 label eth0:1
   }
}

lb02 
vrrp_instance gorup01 {
  state BACKUP
   interface eth0
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
      auth_type PASS
      auth_pass 1111
   }
   virtual_ipaddress {
   10.0.0.3/24 dev eth0 label eth0:1
   }
}
vrrp_instance gorup02 {
   state MASTER
   interface eth0
   virtual_router_id 52
   priority 150
   advert_int 1
   authentication {
      auth_type PASS
      auth_pass 1111
   }
   virtual_ipaddress {
  10.0.0.4/24 dev eth0 label eth0:1
   }
}
测试 查看虚IP地址lb01  .3   lb02  .4

修改nginx反向代理监控地址信息把bbs' 监听地址设置为10.0.0.4

十一.keepalived高可用服务实践部署的更多相关文章

  1. Keepalived高可用服务

    Keepalived高可用服务 避免负载均衡服务出现单点问题 高可用服务原理 Keepalived的工作原理: Keepalived高可用对之间是通过VRRP通信的,因此,我从 VRRP开始了解起: ...

  2. keepalived高可用服务配置管理

    实验环境: 主机 ipaddress 服务 备注 k8s-master1 10.0.0.63 nginx k8s-master2 10.0.0.64 nginx k8s-node1 10.0.0.65 ...

  3. 干货 | Keepalived高可用服务配置实例

    一个执着于技术的公众号 Keepalived系列导读 Keepalived入门学习 keepalived安装及配置文件详解 前言 在前面的章节中,我们学习了Keepalived简介.原理.以及Keep ...

  4. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  5. Linux实战教学笔记31:Keepalived高可用集群应用实践

    1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...

  6. Linux(13):期中架构(5)--- 前端部分:keepalived高可用 & HTTPS & iptables防火墙

    keepalived 高可用集群 1. keepalived服务概念说明 # 1.1 keepalived软件的作用? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LV ...

  7. keepalived高可用集群。

    keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...

  8. Linux系统——Keepalived高可用集群

    #### keepalived服务的三个重要功能1. 管理LVS负载均衡软件Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得 ...

  9. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

随机推荐

  1. 软件工程(GZSD2015) 第二次作业文档模板

    题目: (此处列出题目) 需求分析: 基本功能 基本功能点1 基本功能点2 ... 扩展功能(可选) 高级功能(可选) 设计 设计点1 设计点2 ... 代码实现 // code here 程序截图 ...

  2. 数据库主键到底是用自增长(INT)好还是UUID好

    其实针对使用自增长还是UUID,大家讨论最多的就是速度和存储空间,这里我加入了安全性和分布式,具体对比如下: 使用自增长做主键的优点:1.很小的数据存储空间2.性能最好3.容易记忆使用自增长做主键的缺 ...

  3. Python学习之路——函数的参数分类

    今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合​*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值​'''​'''注:形参随着函数的调用 ...

  4. 记录腾讯云中矿机病毒处理过程(重装系统了fu*k)

    刚想学学kafka,登录与服务器看看把,谁知ssh特别慢,很奇怪,我以为是我网速问题,断了wifi,换了网线,通过iterm想要ssh root@x.x.x.x,但是上不去? 就tm的很奇怪了,登录腾 ...

  5. python基础3 字符串常用方法

    一. 基础数据类型 总览 int:用于计算,计数,运算等. 1,2,3,100...... str:'这些内容[]'    用户少量数据的存储,便于操作. bool: True, False,两种状态 ...

  6. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ ...

  7. opencv-python下简单KNN分类识别

    KNN是数据挖掘中一种简单算法常用来分类,此次用来聚类实现对4种花的简单识别. 环境:python2.7+opencv3.0+windows10 原理:在使用KNN函数提取出4种花特征点以后,对需要辨 ...

  8. ubuntu:基本操作;

    1.系统时间与网络时间同步: sudo dpkg-reconfigure tzdata 注: 该博文为扩展型:

  9. linux使用mail发送外部smtp邮件

    linux使用mail发送外部smtp邮件 第一章 说明 参考资料: http://coolnull.com/2614.html linux自带的mail可以实现外部smtp发邮件.不需要本地配置po ...

  10. Go语言系列(八)- Goroute和Channel

    一.Goroute 1. 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配合调度的一个独立单位 B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能 ...