keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

一、下载keepalived

  1. http://www.keepalived.org/

如:keepalived-1.3.4.tar.gz

二、安装keepalived

  1. > tar xf keepalived-1.3.4.tar.gz
  2. > cd keepalived-1.3.4
  3. > ./configure --prefix=/data/keepalived
  4. > make && make install

复制/sbin/keepalived到/usr/sbin下

  1. > cp /data/keepalived/sbin/keepalived /usr/sbin/

keepalived默认会读取/etc/keepalived/keepalived.conf配置文件

  1. > mkdir /etc/keepalived
  2. > cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

复制sysconfig文件到/etc/sysconfig下

  1. > cp /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

复制启动脚本到/etc/init.d下

  1. > cd /data/keepalived-1.3.4
  2. > cp ./keepalived/etc/init.d/keepalived /etc/init.d/
  3. > chmod 755 /etc/init.d/keepalived

  

三、实验环境说明

两台虚拟机,IP分别为192.168.1.222和192.168.1.233,虚拟机与真实主机是桥接模式上网并互通。

分别装上了nginx和haproxy,nginx创建了两个虚拟主机,端口号为8080和8082,配置如下:

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4.  
  5. location / {
  6. root /data/www/site1;
  7. index index.html index.htm;
  8. }
  9. }
  10. server {
  11. listen 8082;
  12. server_name localhost;
  13.  
  14. location / {
  15. root /data/www/site2;
  16. index index.html index.htm;
  17. }
  18. }

haproxy绑定80端口,反向代理这四台主机,配置如下:

  1. global
  2. log 127.0.0.1 local3 info
  3. chroot /data/haproxy
  4. user haproxy
  5. group haproxy
  6. daemon
  7. stats socket /data/haproxy/haproxy.sock mode 600 level admin
  8. stats timeout 2m
  9.  
  10. defaults
  11. log global
  12. mode http
  13. option httplog
  14. option dontlognull
  15. timeout connect 5000
  16. timeout client 50000
  17. timeout server 50000
  18.  
  19. frontend http_front
  20. bind *:80
  21. stats uri /haproxy?stats
  22. #默认使用的后端
  23. default_backend http_back
  24.  
  25. backend http_back
  26. balance roundrobin
  27. option httpchk GET /index.html
  28. option forwardfor header X-Forwarded-For
  29. server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
  30. server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
  31. server node3 192.168.1.233:8080 check inter 2000 rise 3 fall 3 weight 30
  32. server node4 192.168.1.233:8082 check inter 2000 rise 3 fall 3 weight 30

  

三、keepalived的配置

两台虚拟主机上分别装上keepalived
keepalived的配置文件/etc/keepalived/keepalived.conf

  1. #全局配置
  2. global_defs {
  3. #接收通知的email
  4. notification_email {
  5. lackone@126.com
  6. }
  7. #发送通知的email
  8. notification_email_from haproxy_01@126.com
  9. #smtp服务器地址
  10. smtp_server 127.0.0.1
  11. smtp_connect_timeout 30
  12. #运行的标识
  13. router_id haproxy_01
  14. }
  15. #vrrp的实例配置
  16. #haproxy_01名称可自定义
  17. vrrp_instance haproxy_01 {
  18. #主节点
  19. state MASTER
  20. #实例绑定的网卡
  21. #注意centos7下第一块网卡不是eth0,请自行查看,不然keepalived无法启动成功
  22. interface eno16777736
  23. #虚拟路由ID,唯一
  24. virtual_router_id 51
  25. #权重
  26. priority 150
  27. #检查的时间间隔
  28. advert_int 2
  29. #验证
  30. authentication {
  31. auth_type PASS
  32. auth_pass haproxy_01
  33. }
  34. #设置虚拟IP地址
  35. virtual_ipaddress {
  36. 192.168.1.10
  37. 192.168.1.11
  38. }
  39. }

另一台主机上的配置只需修改

  1. state BACKUP
  2. priority 100

配置好后,启动keepalived服务

  1. > service keepalived start

查看网络接口列表

  1. > ip addr list

tcpdump查看,这里的eno16777736是我的网卡名

  1. > tcpdump -i eno16777736 -n 'host 224.0.0.18'
  1. 19:13:30.260858 IP 192.168.1.222 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 150, authtype simple, intvl 2s, length 24
  2. 19:13:32.261878 IP 192.168.1.222 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 150, authtype simple, intvl 2s, length 24
  3. 19:13:34.263286 IP 192.168.1.222 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 150, authtype simple, intvl 2s, length 24

然后我们手动把MASTER的keepalived关掉

  1. > service keepalived stop

然后再用tcpdump查看

  1. > tcpdump -i eno16777736 -n 'host 224.0.0.18'
  1. 19:16:05.120377 IP 192.168.1.233 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 2s, length 24
  2. 19:16:07.121645 IP 192.168.1.233 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 2s, length 24
  3. 19:16:09.122353 IP 192.168.1.233 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 2s, length 24

很明显看到已从222切换到了233了。

然后我们通过浏览器访问192.168.1.10或192.168.1.11可以看到后台服务切换正常,实现了222和233两台主机间服务的高可用。

centos7下keepalived1.3.4安装与使用的更多相关文章

  1. SVN CentOS7 下配置svn的安装及基础配置介绍

    CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一.      实践环境 CentOS 7操作系统(CentO ...

  2. centos7下源码方式安装gitlab8.9+发送邮件+ldap

    CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...

  3. centos7下mysql5.7的安装与配置

    centos7下MySQL5.7的安装与配置 下载 下载地址 根据系统和版本选择红框中的四个RPM包下载即可,然后放到centos7系统中的/opt目录下,等待稍后安装. 安装前的准备 1. 检查系统 ...

  4. inux centos7下源码 tar安装5.7.26详解

    inux centos7下源码 tar安装5.7.26图文详解 官网地址 https://dev.mysql.com/downloads/mysql/ 1.卸载Linux系统上自带的mysql插件(o ...

  5. CentOS7下MySQL5.7的安装-RPM方式

    Installing MySQL on Linux Using RPM Packages 下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ ...

  6. CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]

    一 CentOS下通过rpm方式安装MySQL CentOS版本:CentOS-7 MySQL版本:MySQL-5.6.22 在网上搜了一下,Linux下安装MYSQL有三种方式: 1) 通过yum命 ...

  7. 【CentOS】在Centos7 下无图形界面安装 Oracle11g

    目标 - 在虚拟机CentOS7中无图形界面安装Oracle11G R2版本 ① 系统要求以及准备 1. 物理内存不小于1G: 查看方式: # grep MemTotal /proc/meminfo ...

  8. centos7下redis和php-redis安装

    centos7下redis安装和php-redis扩展安装 //一直yes就可以了 yum install redis //配置 whereis redis.conf vi /etc/redis.co ...

  9. centos7下oracle11g详细的安装与建表操作

    一.oracle的安装,在官网下载oracle11g R2 1.在桌面单击右键,选择“在终端中打开”,进入终端 输入命令:su 输入ROOT密码: 创建用户组oinstall:groupadd oin ...

随机推荐

  1. 配置nginx实现windows/iis应用负载均衡(转载)

    配置nginx实现windows/iis应用负载均衡   nginx是俄罗斯人开发的一款跨平台的高性能HTTP和反向代理服务器,可以利用它实现web应用服务器的负载均衡. 反向代理是指将用户请求通过代 ...

  2. jndi 小案例

    JNDI就是为JAVA中命名和目录服务定义的JAVA API,是命名服务的抽象机制.在J2EE中,JNDI的目的是用来查找J2EE服务器的注册资源.只要该对象在命名服务器上注册过,且你知道命名服务器的 ...

  3. 18.3 redis 的安装

    因为之前我们server不存东西 我们 发现 后打开的网页 是接手不到之前的变化,不能更新到最新的变化的. 我们需要做到server给client发最新的代码已达到同步 我们有三种做法同步到最新的代码 ...

  4. 18.1利用socket .io 实现 editor间代码的同步

    首先,我们想实现在同一个页面editor 大家同时编辑 同步 所以能 我们需要这个url 作为我们 session id 或者叫聊天室的roomid 或者 反正就是保证他们在同一个list里面 就是 ...

  5. Canvas中 drawImage绘制图片不显示

    在学习 html5中的 Canvas.drawImage时写了如下代码: <!doctype html> <html> <head><title>研究& ...

  6. 吴裕雄 python oracle子查询的用法(3)

    import cx_Oracle conn = cx_Oracle.connect("scott/admin@localhost:1521/orcl")cursor = conn. ...

  7. python3进行汉字和unicode码的转换

    输出某个unicode码对应的汉字和某个汉字对应的unicode编码. # -*- coding=UTF-8 -*- str1 = "\u6000"#某个汉字的unicode码 s ...

  8. hibernate flush clear的区别

    有的时候你执行了更新什么的操作不一定能查出来:没有保存到数据库 以下的缓存是指一级缓存,即session:默认缓存是一级缓存: flush的意思就是执行sql,但是还没有commit,没有持久化:再清 ...

  9. java 基础-思维导图

    思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具.了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板. 思维 ...

  10. 附加任务:团队作业7 Alpha冲刺

    附加任务:团队作业7 Alpha冲刺 附加任务要求参考东北师范大学陈志勇老师博客:https://edu.cnblogs.com/campus/nenu/2016SE_NENU/homework/19 ...