gdrocket 发表于 2018-12-31 06:43:49

Keepalived 实现LVS

Keepalived 实现LVS-DR和nginx的同时高可用集群
http://s3.运维网.com/wyfs02/M00/75/97/wKioL1Y9pn2zkM3MAAFlTkQ8KYU040.jpg
  第一步:安装LVS和Nginx,keepalived
  Yum–y install ipvsadm keepalived
  编译安装nginx
  ./configure–prefix=    ,make&&makeinstall
  第二步:设置ipvsadm规则
  Ipvsadm–A –t 10.10.1.62:3380 –s rr
  Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.60 –g –w1
  Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.61 –g –w1
  Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.63 –g –w1
  Ipvsadm–A –t 10.10.1.88:80 –s rr
  Ipvsadm–a –t 10.10.1.88:80 –r 10.10.1.80 –g –w1
  Ipvsadm–a –t 10.10.1.88:80 –r 10.10.1.81 –g –w1
  保存规则:ipvsadm –S< /jiaoben/ipvsadm.txt
  第三步:配置nginx的配置文件。
#usernobody;
worker_processes4; #启动的进程数,建议cpu的核数
#error_loglogs/error.log;
#error_log logs/error.lognotice;
#error_log logs/error.loginfo;
#pid      logs/nginx.pid;
events {
  use epoll;
  worker_connections65535;#进程的最大连接数
  }
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" '
  # '"$httpuser_agent""$http_x_forwarded_for"';
  #access_log logs/access.logmain;
  server_tokens off;   #隐藏版本信息
  sendfile       on;
  #tcp_nopush    on;
  #keepalive_timeout0;
  keepalive_timeout65;
  #gzip on;
  upstream tomcat {
  ip_hash;
  server 10.10.1.60:8080 max_fails=2 fail_timeout=10s;
  server10.10.1.61:8080max_fails=2fail_timeout=10s;
  server10.10.1.63:8080max_fails=2fail_timeout=10s;
  }
  server {
  listen       80;
  server_namelocalhost;
  #charset koi8-r;
  #access_log logs/host.access.logmain;
  location / {
  root /tms;
  index login.jsp
  proxy_set_header X-Frworded-For$remote_addr;
  proxy_set_header Host $host;
  proxy_pass http://tomcat;
  }
  }
  第四步:keepalived的配置文件的修改
  ! Configuration File for keepalived
  global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
  }
  vrrp_instance VI_1 {
  state BACKUP         #从机
  interface eth0
  virtual_router_id 51
  priority 150         #定义优先级,数字大优先极高
  advert_int 1
  nopreempt            #不抢占
  authentication {
  auth_type PASS   #简单的连接样式
  auth_pass 1111   #简单的密码
  }
  virtual_ipaddress {
  10.10.1.62/32 dev eth0
  10.10.1.88/32 dev eth1
  }
  }
  virtual_server 10.10.1.62 3380 {
  delay_loop 6
  lb_algo rr               #LVS调度算法
  lb_kind DR               #LVS集群模式
  nat_mask 255.255.255.255
  #persistence_timeout 50    #绘画保持时间/秒
  protocol TCP               #使用的协议
  real_server 10.10.1.60 3380 {
  weight 1               #默认为1,0为失效
  inhibit_on_failure   #健康检查失败,将weight设为0失效,而不在ipvs里删除
  TCP_CHECK {
  connect_port 3380      #连接端口
  bindto 10.10.1.60      #绑定Ip
  # url {               可以检测多个url
  #path /mrtg/
  #digest9b3a0c85a887a256d6939da88aabd8cd
  # }
  connect_timeout 3      #连接超时
  nb_get_retry 3         #重试次数
  delay_before_retry 3   #重连间隔时间
  }
  }
  real_server 10.10.1.61 3380 {
  weight 1
  inhibit_on_failure   #健康检查失败,将weight设为0失效,而不在ipvs里删除
  TCP_CHECK {
  connect_port 3380      #连接端口
  bindto 10.10.1.61      #绑定Ip
  # url {            可以检测多个url
  #path /mrtg/
  #digest9b3a0c85a887a256d6939da88aabd8cd
  # }
  connect_timeout 3      #连接超时
  nb_get_retry 3         #重试次数
  delay_before_retry 3   #延迟时间
  }
  }
  real_server 10.10.1.63 3380 {
  weight 1
  inhibit_on_failure   #健康检查失败,将weight设为0失效,而不在ipvs里删除
  TCP_CHECK {
  connect_port 3380      #连接端口
  bindto 10.10.1.63
  # url {            可以检测多个url
  #path /mrtg/
  #digest9b3a0c85a887a256d6939da88aabd8cd
  # }
  connect_timeout 3      #连接超时
  nb_get_retry 3         #重试次数
  delay_before_retry 3   #延迟时间
  }
  }
  #=================nginx的HA========啊万恶的分割线啊!!==================================
  virtual_server 10.10.1.88 80 {
  delay_loop 6
  nat_mask 255.255.255.255
  #persistence_timeout 50
  protocol TCP
  real_server 10.10.1.80 80 {
  weight 1
  inhibit_on_failure   #健康检查失败,将weight设为0失效,而不在ipvs里删除
  TCP_CHECK {                #tcp检测
  connect_port 80       #连接端口
  # url {            可以检测多个url
  #path /mrtg/
  #digest9b3a0c85a887a256d6939da88aabd8cd
  # }
  connect_timeout 3      #连接超时
  nb_get_retry 3         #重试次数
  delay_before_retry 3   #延迟时间
  }
  }
  real_server 10.10.1.81 80 {
  weight 1
  inhibit_on_failure   #健康检查失败,将weight设为0失效,而不在ipvs里删除
  TCP_CHECK {                #tcp检测
  connect_port 80       #连接端口
  # url {            可以检测多个url
  #path /mrtg/
  #digest9b3a0c85a887a256d6939da88aabd8cd
  # }
  connect_timeout 3      #连接超时
  nb_get_retry 3         #重试次数
  delay_before_retry 3   #延迟时间
  }
  }
  }
  注意:keepalived.conf的配置
  stateBACKUP的状态均为从,
  priority100         #定义优先级,数字大优先极高,决定主从。
  

  唯一的不足时当nginx的宕掉是,keepalived是不会漂移的,需要增加检测脚本,当nginx挂掉时,强制keepalived stop。
  

  

  

  




页: [1]
查看完整版本: Keepalived 实现LVS