设为首页 收藏本站
查看: 1068|回复: 0

[经验分享] 实战 Centos6.5下 Nginx-1.6.0 +keepalived-1.2.12 +tomcat-7.0.54 实现高可用+负载均衡

[复制链接]

尚未签到

发表于 2019-1-1 07:43:59 | 显示全部楼层 |阅读模式
  Nginx+keepalived+tomcat环境介绍
  系统:centos6.5_64_mini
  nginx版本:Nginx-1.6.0
  keepalived版本:keepalived-1.2.12
  tomcat版本:tomcat-7.0.54
  实验节点如下:
  主节点:192.168.100.41
  备用节点:192.168.100.42
  漂移IP:192.168.100.40
  1.安装所需的库(主备节点都需要安装)
  #  yum -y install gcc gcc-c++ openssl openssl-devel popt-devel  wget
  2.建立相关目录以及用户组(主备节点都需要建立)
  #  cd /yunwei8
  #  mkdir soft
  #  mkdir apps
  #  mkdir server
  #  mkdir /etc/keepalived
  #  cd /yunwei8/soft
  #  /usr/sbin/groupadd www
  #  /usr/sbin/useradd -s /sbin/nologin -M -g www www
  #  mkdir -p /yunwei8/web/www
  #  chmod 777 /yunwei8/web/www
  #  chown -R www:www /yunwei8/web/www
  #  chmod g+s /yunwei8/web/www
  #  mkdir -p /yunwei8/web/logs
  #  chmod +w /yunwei8/web/logs
  #  chown -R www:www /yunwei8/web/logs
  3.将所有软件下载到/yunwei8/soft目录下(主备节点都需要下载)
  #  wget http://down.yunwei8.com/soft/linux/keepalived-1.2.12.tar.gz
  #wget http://down.yunwei8.com/soft/linux/jdk-7u60-linux-x64.tar.gz
  #wget http://down.yunwei8.com/soft/linux/nginx-1.6.0.tar.gz
  # wget http://down.yunwei8.com/soft/linux/apache-tomcat-7.0.54.tar.gz
  # wget http://down.yunwei8.com/soft/linux/pcre-8.35.tar.gz
  4.nginx安装(主备节点都需要安装)
  4.1安装Nginx所需的pcre库
  解压并安装
  #  cd /yunwei8/soft
  #  tar zxvf pcre-8.35.tar.gz
  #  cd pcre-8.35/
  #  ./configure
  #  make && make install
  4.2安装niginx
  解压并安装
  #  cd /yunwei8/soft
  #  tar zxvf nginx-1.6.0.tar.gz
  #  cd nginx-1.6.0
  #  ./configure --user=www --group=www --prefix=/yunwei8/server/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-pcre=../pcre-8.35 --with-pcre-jit
  #  make && make install
  4.3修改主节点nginx.conf配置文件
  #  rm -rf /yunwei8/server/nginx/conf/nginx.conf
  #  vi /yunwei8/server/nginx/conf/nginx.conf
  复制以下内容
  user  www www;
  worker_processes  8;
  error_log  /yunwei8/web/logs/nginx_error.log  crit;
  pid logs/nginx.pid;
  events
  {
  use epoll;
  worker_connections 65535;
  }
  http
  {
  include mime.types;
  default_type application/octet-stream;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 300m;
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 65;
  tcp_nodelay on;
  client_body_buffer_size 128k;
  proxy_connect_timeout 600;
  proxy_read_timeout 600;
  proxy_send_timeout 600;
  proxy_buffer_size 16k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  gzip on;
  gzip_min_length 1k;
  gzip_http_version 1.1;
  gzip_buffers 4 16k;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml
  gzip_vary on;
  upstream tomcat_server
  {
  ip_hash;
  server 192.168.100.41:8080 weight=1 max_fails=2 fail_timeout=30s;
  server 192.168.100.42:8080 weight=1 max_fails=2 fail_timeout=30s;
  }
  server
  {
  listen 80;
  server_name 192.168.100.41;
  location / {
  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;
  proxy_pass http://tomcat_server;
  }
  }
  log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" $http_x_forwarded_for';
  access_log  /yunwei8/web/logs/access.log  access;
  }
  4.4测试(主节点)
  #  /yunwei8/server/nginx/sbin/nginx -t
  如果显示下面信息,即表示配置没问题
  nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
  4.5修改备节点nginx.conf配置文件
  #  rm -rf /yunwei8/server/nginx/conf/nginx.conf
  #  vi /yunwei8/server/nginx/conf/nginx.conf
  复制以下内容
  user  www www;
  worker_processes  8;
  error_log  /yunwei8/web/logs/nginx_error.log  crit;
  pid logs/nginx.pid;
  events
  {
  use epoll;
  worker_connections 65535;
  }
  http
  {
  include mime.types;
  default_type application/octet-stream;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 300m;
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 65;
  tcp_nodelay on;
  client_body_buffer_size 128k;
  proxy_connect_timeout 600;
  proxy_read_timeout 600;
  proxy_send_timeout 600;
  proxy_buffer_size 16k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  gzip on;
  gzip_min_length 1k;
  gzip_http_version 1.1;
  gzip_buffers 4 16k;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml
  gzip_vary on;
  upstream tomcat_server
  {
  ip_hash;
  server 192.168.100.41:8080 weight=1 max_fails=2 fail_timeout=30s;
  server 192.168.100.42:8080 weight=1 max_fails=2 fail_timeout=30s;
  }
  server
  {
  listen 80;
  server_name 192.168.100.42;
  location / {
  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;
  proxy_pass http://tomcat_server;
  }
  }
  log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" $http_x_forwarded_for';
  access_log  /yunwei8/web/logs/access.log  access;
  }
  4.6测试(备节点)
  #  /yunwei8/server/nginx/sbin/nginx -t
  如果显示下面信息,即表示配置没问题
  nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
  4.7编写nginx 启动服务(主备节点)
  #  vi /etc/init.d/nginx
  ##输入以下代码并保存
#!/bin/sh## nginx - this script starts and stops the nginx daemin## chkconfig:   - 85 15 # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \#               proxy and IMAP/POP3 proxy server# processname: nginx# config:      /yunwei8/server/nginx/conf/nginx.conf# pidfile:     /yunwei8/server/nginx/logs/nginx.pid # Source function library.. /etc/rc.d/init.d/functions # Source networking configuration.. /etc/sysconfig/network # Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0 nginx="/yunwei8/server/nginx/sbin/nginx"prog=$(basename $nginx) NGINX_CONF_FILE="/yunwei8/server/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    echo -n $"Starting $prog: "    daemon $nginx -c $NGINX_CONF_FILE    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval} stop() {    echo -n $"Stopping $prog: "    killproc $prog -QUIT    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval} restart() {    configtest || return $?    stop    start} reload() {    configtest || return $?    echo -n $"Reloading $prog: "    killproc $nginx -HUP    RETVAL=$?    echo} configtest() {  $nginx -t -c $NGINX_CONF_FILE} rh_status() {    status $prog} rh_status_q() {    rh_status >/dev/null 2>&1} case "$1" in    start)        rh_status_q && exit 0        $1        ;;    stop)        rh_status_q || exit 0        $1        ;;    restart|configtest)        $1        ;;    reload)        rh_status_q || exit 7        $1        ;;    status)        rh_status        ;;    *)        echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"        exit 2esac  4.8设置权限并添加到启动服务列表中(主备节点)
  #  chmod 755 /etc/init.d/nginx
  #  chkconfig --add nginx
  #  chkconfig --level 345 nginx on
  4.9启动nginx(主备节点)
  #  service nginx start
  5.JDK安装(主备节点)
  5.1解压缩包
  #  cd /yunwei8/soft
  #  tar zxvf jdk-7u60-linux-x64.tar.gz
  #  mv jdk1.7.0_60/ /yunwei8/server/
  5.2让我们装的JDK成为默认的JDK(主备节点)
  #  update-alternatives --install /usr/bin/java java /yunwei8/server/jdk1.7.0_60/bin/java 300
  #  update-alternatives --install /usr/bin/javac javac /yunwei8/server/jdk1.7.0_60/bin/javac 300
  5.3设置环境变量(主备节点)
  #  cd /yunwei8/soft
  #  vi /etc/profile
  ##在最后加入如下参数
  Java_HOME=/yunwei8/server/jdk1.7.0_60
  PATH=$Java_HOME/bin:$PATH
  CLASSPATH=.:$Java_HOME/lib/tools.jar:$Java_HOME/lib/dt.jar

  export Java_HOME PATH>  5.4激活刚才的配置(主备节点)
  #  source /etc/profile
  5.5查看Java版本,看是否配置合适(主备节点)
  #  java -version
  6.tomcat安装(主备节点)
  6.1解压并安装apache-tomcat-7.0.54
  #  cd /yunwei8/soft
  #  tar zxvf apache-tomcat-7.0.54.tar.gz
  #  mv apache-tomcat-7.0.54 /yunwei8/apps/tomcat7
  6.2设置tomcat权限(主备节点)
  #  cd /yunwei8/apps/tomcat7/bin/
  #  chmod 777 *.sh
  6.3启动tomcat(主备节点)
  #  /yunwei8/apps/tomcat7/bin/startup.sh
  7.keepalived安装(主备节点)
  7.1安装keepalived-1.2.12
  #  cd /yunwei8/soft
  #  tar zxvf keepalived-1.2.12.tar.gz
  #  cd keepalived-1.2.12
  #  ./configure --prefix=/yunwei8/server/keepalived
  #  make && make install
  7.2复制相关目录(主备节点)
  #复制keepalived启动文件到默认路径,也可以通过设置环境变量的path实现
  #  cp /yunwei8/server/keepalived/sbin/keepalived /usr/sbin/
  #复制keepalived服务脚本到默认的地址,也通过修改init.d/keepalived文件中的相应配置实
  #  cp /yunwei8/server/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  #复制服务启动脚本到,以便可以通过service控制keepalived服务
  #  cp /yunwei8/server/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  7.3设置权限并添加到启动服务列表中(主备节点)
  #  chmod 755 /etc/init.d/keepalived
  #  chkconfig --add keepalived
  #  chkconfig --level 345 keepalived on
  7.4创建nginx监控脚本(主备节点)
  #  vi /yunwei8/server/nginx/conf/check_nginx.sh
  复制以下脚本
#!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /yunwei8/server/nginx/sbin/nginxsleep 3if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi  7.5给nginx监控脚本赋予权限(主备节点)
  #  chmod 755 /yunwei8/server/nginx/conf/check_nginx.sh
  7.6编写配置文件,主节点(192.168.100.41)创建keepalived配置文件
  #  vi /etc/keepalived/keepalived.conf
  复制以下配置文件
  !Configuration File for keepalived
  global_defs {
  notification_email {
  77121151@qq.com
  }
  notification_email_from 41@yunwei8.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id NGINX1_DEVEL
  }
  vrrp_script chk_nginx {
  script "/yunwei8/server/nginx/conf/check_nginx.sh"
  interval 2
  weight 2
  }
  vrrp_instance VI_1 {
  state MASTER
  nopreempt
  interface eth0
  virtual_router_id 41
  mcast_src_ip 192.168.100.41
  priority 150
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass fds#FSAF897
  }
  virtual_ipaddress {
  192.168.100.40
  }
  track_script {
  chk_nginx
  }
  }
  备用节点(192.168.100.42)创建keepalived配置文件
  #  vi /etc/keepalived/keepalived.conf
  ##复制以下配置文件
  ! Configuration File for keepalived
  global_defs {
  notification_email {
  77121151@qq.com
  }
  notification_email_from 42@yunwei8.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id NGINX2_DEVEL
  }
  vrrp_script chk_nginx {
  script "/yunwei8/server/nginx/conf/check_nginx.sh"
  interval 2
  weight 2
  }
  vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 41
  mcast_src_ip 192.168.100.42
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass fds#FSAF897
  }
  virtual_ipaddress {
  192.168.100.40
  }
  track_script {
  chk_nginx
  }
  }
  7.7保存配置文件后,启动keepalived服务(主备节点)
  #  service keepalived start
  8.防火墙设置
  端口开放
  #  iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
  #  iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  #  iptables -I INPUT 3 -p vrrp -j ACCEPT
  #  /etc/rc.d/init.d/iptables save
  9.测试,这里简单做下,大家可以自己多测试
  9.1主节点测试,查看是否有漂移IP,如果有192.168.1.40则表示主节点漂移IP绑定成功
  #  ip a
  9.2备节点测试,查看是否有漂移IP,如果在主节点没有故障的前提下没有绑定192.168.1.40则表示成功
  #  ip a
  9.3关闭主节点访问http://192.168.1.40测试,如果能成功访问说明漂移IP已经绑定到备节点上



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658088-1-1.html 上篇帖子: RHEL6平台Keepalived+LVS+iSCSI+GFS搭建高可用负载均衡Web集群 下篇帖子: CentOS6.2下搭建LVS(NAT)+Keepalived实现高性能高可用负载均衡服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


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


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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