设备:

1、准备四台虚拟机,两台tomcat,两台nginx

2、两台tomcat配置相同,测试页不同

两台Tomcat配置完全相同、只有测试页面不同

安装jdk和tomcat

[root@localhost ~]# rz

导入jdk以及tomcat源码包

[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz

[root@localhost ~]#  tar xf  jdk-8u191-linux-x64.tar.gz

[root@localhost ~]# mv jdk1.8.0_191 /usr/local/java                          #移动jdk包到/usr/local/下并取名java

[root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat        #移动tomcat包到/usr/local/下并取名tomcat

[root@localhost ~]# vi /etc/profile

在最后添加

  1. export JAVA_HOME=/usr/local/java
  2.  
  3. export PATH=$PATH:$JAVA_HOME/bin

[root@localhost ~]# source /etc/profile                                           #生效文件

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh                       #开启服务

Tomcat1测试页

[root@localhost ~]# echo “111111” > /usr/local/tomcat/webapps/ROOT/index.jsp

Tomcat2测试页

[root@localhost ~]# echo “222222” > /usr/local/tomcat/webapps/ROOT/index.jsp

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh                    #启动服务

[root@localhost ~]# netstat   -anpt  |  grep  :8080                        #查看8080端口
tcp6 0 0 :::8080 :::* LISTEN     9968/java

关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0

[root@localhost ~]# netstat -anpt | grep :8080

两台nginx配置完全相同

安装keepalived

[root@localhost ~]# yum install keepalived -y

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf

[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak         #备份keeplived配置文件

[root@localhost~]# vim /etc/keepalived/keepalived.conf                           #修改主配置文件

  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. acassen@firewall.loc
  5. }
  6. notification_email_from Alexandre.Cassen@firewall.loc
  7. smtp_server 192.168.200.1
  8. smtp_connect_timeout
  9. router_id LVS_DEVEL
  10. vrrp_skip_check_adv_addr
  11. vrrp_strict
  12. vrrp_garp_interval
  13. vrrp_gna_interval
  14. }
  15. vrrp_script chk_http_port { #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等
  16. script "/root/nginx.sh" #这里通过脚本监测
  17. interval #每两秒检测一次
  18. weight - #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -
  19. fall #检测连续2次失败才算确定是真失败。会用weight减少优先级(-255之间)
  20. rise #检测1次成功就算成功。但不修改优先级
  21. }
  22. vrrp_instance VI_1 {
  23. state BACKUP #主keepalived为master,备keeplived为backup
  24. interface ens33
  25. virtual_router_id
  26. priority
  27. advert_int
  28. authentication {
  29. auth_type PASS
  30. auth_pass
  31. }
  32. virtual_ipaddress {
  33. 192.168.200.254
  34. }
  35. track_script { #执行监控的服务。
  36. chk_http_port #引用VRRP脚本,即在 vrrp_script 部分指定的名字。
  37. }
  38. }

编写nginx心跳脚本

[root@localhost ~]# vim nginx.sh

  1. #!/bin/bash
  2. counter=$(ps -C nginx --no-heading|wc -l)
  3. if [ "${counter}" = "" ]; then
  4. /usr/local/nginx/sbin/nginx
  5. sleep
  6. counter=$(ps -C nginx --no-heading|wc -l)
  7. if [ "${counter}" = "" ]; then
  8. systemctl stop keepalived
  9. fi
  10. fi

[root@localhost~]#  chmod +x /root/nginx.sh

[root@localhost~]#  systemctl restart keeplived         #重启keepalived服务

安装Nginx

[root@localhost ~]# rz

导入Nginx源码包

[root@localhost ~]# tar xf xf nginx-1.15.9.tar.gz -C /usr/src

[root@localhost ~]# cd /usr/src/nginx-1.15.9

[root@localhost~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-pcre

[root@localhost~]# ln -sf /usr/local/nginx/sbin/nginx /usr/local/sbin

[root@localhost ~]# ll /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 10月 21 10:50 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

[root@localhost~]# vim /usr/local/nginx/conf/nginx.conf

  1. user nginx nginx;
  2.  
  3. worker_processes ;
  4.  
  5. error_log logs/error.log;
  6.  
  7. pid logs/nginx.pid;
  8.  
  9. events {
  10.  
  11. use epoll;
  12.  
  13. worker_connections ;
  14.  
  15. }
  16.  
  17. http {
  18.  
  19. include mime.types;
  20.  
  21. default_type application/octet-stream;
  22.  
  23. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  24.  
  25. '$status $body_bytes_sent "$http_referer" '
  26.  
  27. '"$http_user_agent" "$http_x_forwarded_for"';
  28.  
  29. access_log logs/access.log main;
  30.  
  31. sendfile on;
  32.  
  33. keepalive_timeout ;
  34.  
  35. gzip on;
  36.  
  37. upstream tomcat_server {
  38.  
  39. server 192.168.200.112: weight=; #此处IP为tomcat机IP
  40.  
  41. server 192.168.200.113: weight=;
  42.  
  43. }
  44.  
  45. server {
  46.  
  47. listen 192.168.200.254:; #监听服务机192.168.200.254的80端口
  48.  
  49. server_name localhost;
  50.  
  51. charset utf-;
  52.  
  53. access_log logs/host.access.log main;
  54.  
  55. location / {
  56.  
  57. root html;
  58.  
  59. index index.html index.htm index.jsp;
  60.  
  61. proxy_pass http://tomcat_server;
  62.  
  63. proxy_set_header Host $http_host;
  64.  
  65. }
  66.  
  67. }
  68.  
  69. }

[root@localhost~]# nginx -t                              #检查语法

[root@localhost~]#nginx                                  #启动服务

[root@localhost~]#killall -HUP nginx               #启动服务

[root@localhost ~]# netstat -anpt | grep :80    #检测80端口

[root@localhost ~]# ip a

inet 192.168.200.122/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.200.254/32 scope global ens33            #可以看到有多了一个192.168.200.254的网卡

测试:开启多个页面依旧是111和222分配一致

nginx+keepalived+tomcat实现主从高可用负载均衡的更多相关文章

  1. Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡

    周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...

  2. Lvs+Keepalived+Bind+web构建高可用负载均衡系统

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hatech.blog.51cto.com/8360868/1417899 --- ...

  3. LVS+keepalived DR模式配置高可用负载均衡集群

    实验环境 LVS-Master 10.0.100.201 VIP:10.0.100.203 LVS-Slave       10.0.100.204 WEB1-Tomcat 10.0.2.29 gat ...

  4. Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群

    ------------------------------------- 一.前言 二.MySQL Cluster基本概念 三.环境 四.配置 1.LB-Master及LB-Backup配置 2.M ...

  5. Linux下Keepalived+LVS-DR模式配置高可用负载均衡集群

    一.环境说明:     操作系统:Centos-6.5_x86_64    keepalived软件安装在node2和node3机器上.     实际安装之前,先关闭keepalived节点(node ...

  6. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  7. Keepalived+LVS(dr)高可用负载均衡集群的实现

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...

  8. 搭建MySQL高可用负载均衡集群

    1.简介 使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.这一结果也不利于软件的推广. 那么如何跨过这个 ...

  9. 搭建MySQL高可用负载均衡集群(转)

    阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.Haproxy介绍 4.2.keepalived介绍 5.中间件的安装与配置(haproxy.keepalived ...

随机推荐

  1. 二、ZigBee无线网络

    概述 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议.根据国际标准规定,ZigBee技术是一种短距离.低功耗的无线通信技术.这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(be ...

  2. make && make install

    ./configure  --prefix= /usr/local/python3.6.6 make &&  make  install  prefix=/usr/local/pyth ...

  3. 你是否听说过 HashMap 在多线程环境下操作可能会导致程序死循环?

    作者:炸鸡可乐 原文出处:www.pzblog.cn 一.问题描述 经常有些面试官会问,是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100% 的线上故障? 关 ...

  4. JAVASCRIPT实现的WEB页面跳转以及页面间传值方法

    在WEB页面中,我们实现页面跳转的方法通常是用LINK,BUTTON LINK ,IMG LINK等等,由用户点击某处,然后直接由浏览器帮我们跳转. 但有时候,需要当某事件触发时,我们先做一些操作,然 ...

  5. 线程同步器CountDownLatch

    Java程序有的时候在主线程中会创建多个线程去执行任务,然后在主线程执行完毕之前,把所有线程的任务进行汇总,以前可以用线程的join方法,但是这个方法不够灵活,我们可以使用CountDownLatch ...

  6. THINKCMF5 部署到 Windows服务器

    问题一 [public/index.php是项目的入口文件,请配置服务器时把 public 目录做为 web 目录]这是官方文档的一句话.如何将public 目录做为 web 目录? 解答:在IIS或 ...

  7. 数据结构学习笔记 <1> 线性表

     一.线性表的抽象数据类型描述 类型名:线性表(List) 数据对象集:线性表示n(>=0)个元素构成的有序序列(a1,a2,……,an) 操作集:线性表L∈List, 整数i表示位置,元素X∈ ...

  8. Spring Boot项目指定启动后执行的操作

    Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...

  9. crontab实践

    1.crontab概要 2.crontab使用 3.关键配置信息 3.1如何配置定时任务 4.注意事项 参考 https://www.cnblogs.com/keithtt/p/6946498.htm ...

  10. MySQL 的两种存储引擎

    MyISAM 是MySQL的默认数据库引擎(5.5以后默认是InnoDB)性能极佳,但不支持事务处理. InnoDB 是MySQL的数据库常用的数据引擎. MyISAM 和 InnoDB 两者之间有明 ...