热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2018.4.915周4次课

十五周四次课(4月9日)18.1集群介绍18.2keepalived介绍18.318.418.5用keepalived配置高可用集群18.1集群介绍根据功能划分为两大类:高可用和负

十五周四次课(4月9日)

18.1 集群介绍

18.2 keepalived介绍

18.3/18.4/18.5 用keepalived配置高可用集群

18.1 集群介绍

  • 根据功能划分为两大类:高可用和负载均衡

  • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务

  • 实现高可用的开源软件有:heartbeat、keepalived

  • 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2

  • 实现负载均衡的开源软件有LVS、keepalived、haproxy、nginx,商业的有F5、Netscaler

18.2 keepalived介绍

  • 在这里我们使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果

  • keepalived通过VRRP(Virtual Router Redundancy Protocl)来实现高可用。

  • 在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里会有1个master角色和N(N>=1)个backup角色。

  • master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的mater。

  • Keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。

18.3/18.4/18.5 用keepalived配置高可用集群

准备两台机器100和101,101作为master,100作为backup,102作用VIP

VIP是一个新的概念,它的英文名字是“Virtual IP”,即“虚拟IP”,这个IP是由keepalived给服务器配置上的,服务器靠这个VIP对外提供服务,当master机器宕机,VIP被分配到backup上

两台机器都执行yum install -y keepalived

两台机器都安装nginx,其中101上已经编译安装过nginx,100上需要yum安装nginx: yum install -y nginx

查看keepalived的配置文件:cat /etc/keepalived/keepalived.conf

清空配置文件:> /etc/keepalived/keepalived.conf

  • 编辑101上keepalived配置文件,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf获取

vim /etc/keepalived/keepalived.conf

global_defs {

  notification_email {

    aming@aminglinux.com //定义接受告警的

  }

  notification_email_from root@aminglinux.com //定义发邮件地址(实际上没用)

  smtp_server 127.0.0.1 //定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务器发送

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

vrrp_script chk_nginx { //chk_nginx为自定义名字,后面还会用到它

   script "/usr/local/sbin/check_ng.sh" //自定义脚本,该脚本为监控nginx服务的脚本

   interval 3 //每隔3s执行一次该脚本

}

vrrp_instance VI_1 {

   state MASTER //角色为master

   interface ens33 //针对哪个网卡监听vip

   virtual_router_id 51 //虚拟路由的id,和从上保持一致,说明它们是一组

   priority 100 //权重为100,master要比backup大

   advert_int 1

   authentication {

       auth_type PASS //认证形式是密码

       auth_pass aminglinux>com //定义密码,这个密码自定义

   }

   virtual_ipaddress {

       192.168.37.102 //定义VIP

   }

   track_script {

       chk_nginx //定义监控脚本,这里要和上面vrrp_script后面的字符串保持一致

   }

}

101编辑监控脚本,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh获取

文件路径就是上面配置文件里定义好的vim /usr/local/sbin/check_ng.sh

#!/bin/bash

#时间变量,用于记录日志

d=`date --date today +%Y%m%d_%H:%M:%S`

#计算nginx进程数量

n=`ps -C nginx --no-heading|wc -l`

#如果进程为0,则启动nginx,并且再次检测nginx进程数量,

#如果还为0,说明nginx无法启动,此时需要关闭keepalived

if [ $n -eq "0" ]; then

       /etc/init.d/nginx start

       n2=`ps -C nginx --no-heading|wc -l`

       if [ $n2 -eq "0"  ]; then

               echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log

               systemctl stop keepalived

       fi

fi

给脚本755权限:chmod 755 /usr/local/sbin/check_ng.sh

技术分享图片

启动服务:systemctl start keepalived

技术分享图片

查看nginx是否会自动加载:

service nginx stop

技术分享图片

ps aux|grep nginx

技术分享图片

没有自动加载,查看日志:cat /var/log/messages

找到关键的错误信息:SECURITY VIOLATION - scripts are being executed but script_security not enabled.

技术分享图片

关闭防火墙

技术分享图片

技术分享图片

再次查看nginx

技术分享图片

VIP地址是否加载:ip add

技术分享图片

分别关闭2台主机的防火墙

iptables -F

systemctl stop firewalld

setenforce 0

主页显示:

ls /usr/local/nginx/conf/vhost/

技术分享图片

cat /usr/local/nginx/conf/vhost/aaa.com.conf

技术分享图片

cat /data/wwwroot/default/index.html

技术分享图片

技术分享图片

  • 100上编辑配置文件,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf获取

查看keepalived的配置文件:cat /etc/keepalived/keepalived.conf

清空配置文件:> /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

global_defs {

  notification_email {

    aming@aminglinux.com

  }

  notification_email_from root@aminglinux.com

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

vrrp_script chk_nginx {

   script "/usr/local/sbin/check_ng.sh"

   interval 3

}

vrrp_instance VI_1 {

   state BACKUP

   interface ens33

   virtual_router_id 51

   priority 90

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass aminglinux>com

   }

   virtual_ipaddress {

       192.168.37.102

   }

   track_script {

       chk_nginx

   }

}

100上编辑监控脚本,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh获取

文件路径就是上面配置文件里定义好的vim /usr/local/sbin/check_ng.sh

#时间变量,用于记录日志

d=`date --date today +%Y%m%d_%H:%M:%S`

#计算nginx进程数量

n=`ps -C nginx --no-heading|wc -l`

#如果进程为0,则启动nginx,并且再次检测nginx进程数量,

#如果还为0,说明nginx无法启动,此时需要关闭keepalived

if [ $n -eq "0" ]; then

       systemctl start nginx //和主不一样,因为从是yum安装的,主是编译安装的

       n2=`ps -C nginx --no-heading|wc -l`

       if [ $n2 -eq "0"  ]; then

               echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log

               systemctl stop keepalived

       fi

fi

给脚本755权限:chmod 755 /usr/local/sbin/check_ng.sh

启动服务 systemctl start keepalived

技术分享图片

主页显示:

因为是yum安装的,所以默认页的位置在:/usr/share/nginx/html/index.html

cat /usr/share/nginx/html/index.html

技术分享图片

现在访问192.168.37.102 //主机在master上

技术分享图片

  • 测试高可用

关闭master上的keepalived服务

systemctl stop keepalived

ip add // vip释放了

技术分享图片

Backup上

ip add //绑定了vip

技术分享图片

技术分享图片

查看backup主机日志:tail /var/log/messages

Netlink reflector reports IP 192.168.37.102 added //192.168.37.102这个IP被增加了

在master上用curl查看

curl -I 192.168.37.102 //nginx在backup上

技术分享图片

启动master上的keepalived服务

systemctl start keepalived

技术分享图片

curl -I 192.168.37.102 //nginx在master上

技术分享图片

查看backup主机日志:tail /var/log/messages

Netlink reflector reports IP 192.168.37.102 removed //192.168.37.102这个IP被移除了



推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
author-avatar
当初
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有