设备:

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

在最后添加

export JAVA_HOME=/usr/local/java

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                           #修改主配置文件

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

编写nginx心跳脚本

[root@localhost ~]# vim nginx.sh

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "" ]; then
/usr/local/nginx/sbin/nginx
sleep
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "" ]; then
systemctl stop keepalived
fi
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

user  nginx nginx;

worker_processes  ;

error_log  logs/error.log;

pid        logs/nginx.pid;

events {

    use epoll;

    worker_connections  ;

}

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"';

    access_log  logs/access.log  main;

    sendfile        on;

    keepalive_timeout  ;

    gzip  on;

    upstream tomcat_server {

        server 192.168.200.112: weight=;             #此处IP为tomcat机IP

        server 192.168.200.113: weight=;

    }

    server {

        listen       192.168.200.254:;                        #监听服务机192.168.200.254的80端口

        server_name  localhost;

        charset utf-;

        access_log  logs/host.access.log  main;

        location / {

            root   html;

            index  index.html index.htm index.jsp;

            proxy_pass http://tomcat_server;

            proxy_set_header Host $http_host;       

        }

    }

}

[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. python UI自动化之切换iframe

    python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame(" ...

  2. DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】

    XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...

  3. How to make mail more effectively?

    1.What does your reader need to know? 2.What does your reader know already? 3.Will your reader be ab ...

  4. Apache Kafka(三)- Kakfa CLI 使用

    1. Topics CLI 1.1  首先启动 zookeeper 与 kafka > zookeeper-server-start.sh config/zookeeper.properties ...

  5. time时间模块_python

    一.常用指定格式打印时间 strftime()函数: import timeprint(time.strftime('%Y-%M-%d %H:%M:%S %A' )) #格式可任意定制,2019-14 ...

  6. Bootstrap入门(1)简介

    作者:赵盼盼 出处:https://www.cnblogs.com/zhaopanpan/ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快 ...

  7. DNS辅助

    DNS服务原理详解 DNS:Domain Name Service,域名解析服务 监听端口:udp/53,tcp/53 应用程序:bind 根域:. 一级域: 组织域:.com, .org, .net ...

  8. pycharm开发flask指定ip、端口无效

    原因分析 是因为使用了pycharm的版本的问题.并不是flask框架本身的问题(不管你是如何设置的flask配置,通过加载config也好,还是通过run的时候传入形参也好,均不影响) 可以很明显的 ...

  9. JS高级---案例:贪吃蛇小游戏

    案例:贪吃蛇小游戏 可以玩的小游戏,略复杂,过了2遍,先pass吧 先创建构造函数,再给原型添加方法.分别创建食物,小蛇和游戏对象. 食物,小蛇的横纵坐标,设置最大最小值,运动起来的函数,按上下左右键 ...

  10. 第十八篇 Linux环境下常用软件安装和使用指南

          提醒:如果之后要安装virtualenvwrapper的话,可以直接跳到安装virtualenvwrapper的方法,而不需要先安装好virtualenv   安装virtualenv和生 ...