设为首页 收藏本站

运维网

查看: 611|回复: 1

[经验分享] Keepalived高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-4-9 13:18:55 | 显示全部楼层 |阅读模式
环境:
1、centos6.5
2、虚拟ip:192.168.1.140
3、192.168.1.146、192.168.1.148上分别部署Nginx、Keepalived、tomcat并进行配置
说明:
Nginx 是一个高性能的HTTP反向代理服务器
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免服务的单点故障
Tomcat 是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器
Keepalived + Nginx + Tomcat 的高可用负载均衡架构
如下图:为典型的Tomcat服务多实例部署的架构图
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
(1)用户通过域名请求到DNS,由DNS解析域名后返回对应的IP地址,该IP及为Keepalived映射服务器的虚拟IP
(2)通过该虚拟IP访问到对应的负载均衡器(Nginx),这里Nginx部署两个,然后通过Keepalived来保证NG的高可用,正常情况下由Keepalived-M将虚拟IP映射转发至Nginx-M,
如果Nginx-M出现故障,此时Keepalived会切换至Keepalived-S开始工作,从而保证了NG的单点故障问题。
(3)通过Nginx负载均衡器,将请求路由到对应的Tomcat服务
开始搭建Keepalived + Nginx + Tomcat 的高可用负载均衡架构
服务器准备两台:192.168.1.146、192.168.1.48
安装依赖包yum install -y gcc gcc-c++ ncurses-devel perl pcre pcre-devel openssl openssl-devel zlib make
安装nginx+tomcat
安装nginx
如果yum已安装pcre插件可以不用安装
[iyunv@nginx ~]# useradd nginx -s /sbin/nologin
[iyunv@nginx opt]# tar zxf pcre-8.34.tar.gz
[iyunv@nginx opt]# cd pcre-8.34
[iyunv@nginx pcre-8.34]# ./configure
[iyunv@nginx pcre-8.34]# make && make install
[iyunv@nginx opt]# tar zxf tengine-1.5.1.tar.gz
[iyunv@nginx opt]# cd tengine-1.5.1
[iyunv@nginx tengine-1.5.1]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[iyunv@nginx tengine-1.5.1]# make && make install

(1)修改配置文件

[iyunv@nginx ~]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
[iyunv@nginx ~]# vi /usr/local/nginx/conf/nginx.conf

添加以下配置

user nginx nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
error_log /var/log/www/error.log;
#pid      logs/nginx.pid;
events {
    use epoll;
    worker_connections  51200;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request"'
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    server_info  off;
    server_tag   off;
    server_name_in_redirect off;
    access_log  /var/log/www/access.log  main;
    client_max_body_size 20m;
    client_header_buffer_size 16k;
    large_client_header_buffers 4 16k;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    server_tokens on;
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_proxied   any;
    gzip_http_version 1.1;
    gzip_comp_level 3;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    upstream www {
       #ip_hash;
       server 192.168.1.146:8080;
       server 192.168.1.148:8080;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
      root   html;
      index  index.html index.htm;
      proxy_pass   http://www;
      proxy_redirect    off;
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      client_max_body_size   10m;
      client_body_buffer_size   128k;
      proxy_connect_timeout   90;
      proxy_send_timeout   90;
      proxy_read_timeout   90;
      proxy_buffer_size   4k;
      proxy_buffers   4 32k;
      proxy_busy_buffers_size   64k;
      proxy_temp_file_write_size  64k;
   }
  }
}

安装tomcat

安装jdk,然后解压tomcat到指定路径

[iyunv@test1 date]# rpm -ivh jdk-7u79-linux-x64.rpm
[iyunv@test1 date]# tar zxf apache-tomcat-7.0.85.tar.gz  
[iyunv@test1 date]# mv apache-tomcat-7.0.85 /usr/local/tomcat

安装keepalived

[iyunv@test1 date]#yum -y install keepalived
[iyunv@test1 date]#mv /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak
[iyunv@test1 date]#vi /etc/keepalived/keepalived.conf

修改配置文件keepalived.conf

#全局配置
global_defs {
    router_id LVS_DEVEL
}
#执行脚本配置
vrrp_script check_nginx_status {
    script "/etc/keepalived/check_nginx_status.sh"
    interval 2
    weight 2
}
#keeplived实例配置
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 88
    priority 99 #优先级
    advert_int 1
    nopreempt

    authentication {
        auth_type PASS
        auth_pass Chefu88
    }

    track_script {
        check_nginx_status
    }
#虚拟ip
    virtual_ipaddress {
        192.168.1.140
    }

执行脚本配置check_nginx_status.sh
检测到nginx进程,wc -l统计后,如果为0,就说明ps查不到nginx进程,然后等待3秒,自动启动nginx,
如果重新启动后,已然找不到nginx进程才会关闭keep,然后当keep关闭后,vip就转移到另一台机器

#!/bin/bash
#keepalived check nginx status scripts

prog=nginx
prog_num=`ps -C $prog --no-header | wc -l`
if [ $prog_num -eq 0 ];then
   /usr/local/nginx/sbin/nginx
   sleep 3s
   prog_num=`ps -C $prog --no-header | wc -l`
   if [ $prog_num -eq 0 ];then
      killall keepalived
   fi
fi

查看keepalived切换的效果,如虚拟ip在192.168.1.146上,停止146的keeplived,然后再次查看虚拟ip是否切换到192.168.1.148上,访问虚拟ip:192.168.1.140,可以查看到访问的是主keepalived服务器的tomcat

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
累计签到:1 天
连续签到:1 天
发表于 2018-6-15 14:25:30 | 显示全部楼层
收藏了,谢谢!

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


独家合作伙伴: 青云cloud

快速回复 返回顶部 返回列表