LVS-master:192.168.254.134
LVS-backup:192.168.254.135
LVS-VIP:192.168.254.88
nginx+tomcat:192.168.254.131
nginx+tomcat:192.168.254.132
nginx+tomcat:192.168.254.133
(根据需求可以添加多个)

安装基础包
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装nginx
(下载路径自己选择)
下载nginx1.14.0稳定版本
wget http://nginx.org/download/nginx-1.14.0.tar.gz
解压:tar -zxf nginx-1.14.0.tar.gz
进入解压好后的源码目录:cd nginx-1.14.0
使用默认配置:./configure
编译并安装nginx:make && make install
启动nginx:/usr/local/nginx/sbin/nginx
快速停止nginx:/usr/local/nginx/sbin/nginx -s stop
优雅停止nginx(会将正在处理中的请求处理完毕):/usr/local/nginx/sbin/nginx -s quit
检测配置是否错误:/usr/local/nginx/sbin/nginx -t
重新加载配置:/usr/local/nginx/sbin/nginx -s reload
1、编写Nginx启动脚本,并加入系统服务
vim /etc/init.d/nginx
并在其中写入如下内容:

#!/bin/bash
#chkconfig: - 30 21
#description: http service.
#Source Function Library
. /etc/init.d/functions
#Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload(){
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
configtest(){
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|
restart|configtest}"
RETVAL=1
esac
exit $RETVAL

并更改文件的执行权限:chmod 755 /etc/init.d/nginx
加入系统服务启动列表 :chkconfig --add nginx
并使开机启动:chkconfig nginx on
开启服务 : service nginx start 或者 /etc/init.d/nginx start|stop|restart
查看nginx页面是否可以正常访问。
http://192.168.254.131/

安装基础环境jdk
wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1530931780_fdbf6ecf3dfcc8e6eb6fcef06a7eaaec

tar -zxf jdk-8u171-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_171/ jdk1.8
vi /etc/profile
在最后添加jdk环境变量
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使环境变量生效
source /etc/profile
查看jdk版本
java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
查看jdk路径
echo $JAVA_HOME
/usr/local/jdk1.8

安装tomcat
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz

tar -zxf apache-tomcat-9.0.10.tar.gz
mv apache-tomcat-9.0.10 /usr/local/tomcat
创建项目目录
mkdir -p /home/www/web/ (里面写个index.jsp)
vi index.jsp (保存推出即可)
修改tomcat 访问路径
cd /usr/local/tomcat/conf/
vi server.xml
<Host name="localhost" appBase="/home/www/web"
unpackWARs="true" autoDeploy="true">
这一行是添加的
<Context path="" docBase="/home/www/web" reloadable="true"/>

查看tomcat页面是否可以正常访问
http://192.168.254.131:8080/

配置nginx和tomcat 负载均衡/反向代理
cd /usr/local/nginx/conf/
vi nginx.conf
user www www;
worker_processes 4;

error_log /usr/local/nginx/logs/error.log;
error_log /usr/local/nginx/logs/error.log notice;
error_log /usr/local/nginx/logs/error.log info;

pid /usr/local/nginx/logs/nginx.pid;

#工作模式及连接数上限
events {
use epoll;

worker_connections  65535;

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/proxy.conf;
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;#设定请求缓冲
server_names_hash_bucket_size  128;
client_header_buffer_size   32K;
large_client_header_buffers  4 32k;
# client_max_body_size   8m;sendfile        on;
tcp_nopush      on;
tcp_nodelay     on;#keepalive_timeout  0;
keepalive_timeout  65;gzip  on;
gzip_min_length  1k;
gzip_buffers   4 16k;
gzip_http_version  1.1;
gzip_comp_level  2;
gzip_types  text/plain application/x-javascript text/css  application/xml;
gzip_vary on;    #此处为你tomcat的地址,可以写多个tomcat地址
upstream tomcat_pool {server 192.168.254.133:8080 weight=4 max_fails=2 fail_timeout=30s;server 192.168.254.132:8080 weight=4 max_fails=2 fail_timeout=30s;server 192.168.254.131:8080 weight=4 max_fails=2 fail_timeout=30s;
}    server {listen       80;server_name  www.web2.com;#此处替换为你自己的网址,如有多个中间用空格index index.jsp index.htm index.html  index.do;#设定访问的默认首页地址     root /home/www/web; #设定网站的资源存放路径 #charset koi8-r;#access_log  logs/host.access.log  main;location / {#     root   html;index index.jsp index.html index.htm;}location ~ \.(jsp|jspx|dp)?$ #所有JSP的页面均交由tomcat处理{proxy_set_header  Host $host;proxy_set_header  X-Real-IP $remote_addr; proxy_pass http://tomcat_pool;#转向tomcat处理}#设定访问静态文件直接读取不经过tomcatlocation ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {expires  30d;}location ~ .*\.(js|css)?${expires  1h;}access_log  /usr/local/nginx/logs/ubitechtest.log main;#设定访问日志的存放路径  error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}server {listen       80;server_name  bbs.yourdomain.com;location / {root /home/www/web/springmvc; #设定网站的资源存放路径 index index.jsp index.htm index.html  index.do welcome.jsp;#设定访问的默认首页地址   }location ~ \.(jsp|jspx|dp)?$ #所有JSP的页面均交由tomcat处理{proxy_set_header  Host $host;proxy_set_header  X-Real-IP $remote_addr; proxy_pass http://tomcat_pool;#转向tomcat处理}#设定访问静态文件直接读取不经过tomcatlocation ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {expires  30d;}location ~ .*\.(js|css)?${expires  1h;}access_log  /usr/local/nginx/logs/ubitechztt.log main;#设定访问日志的存放路径     error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

创建用户www和用户组www为该文件目录的使用权限者
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www -s /sbin/nologin
mkdir -p /home/www
chmod +w /home/www
chown -R www:www/home/www

vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
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;

/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

简单测试
3个nginx都可以分别访问代理的三个tomcat 。
[root@Zabbix conf]# curl 192.168.254.131
2222222222222222222222222222222222222222
[root@Zabbix conf]# curl 192.168.254.131
33333333333333333333333333333
[root@Zabbix conf]# curl 192.168.254.131
111111111111111111111111111111111111111
ok,到此,nginx和tomcat 完成了。
(注意:以上每组配置都一样)

安装lvs+keepalived。

yum -y install ipvsadm keepalived (yum安装就不多说了 )

开启路由转发
永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p ----加载,使得配置文件立即生效
检查:
sysctl -a |grep "ip_forward"
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

配置keepalived
master配置
! Configuration File for keepalived

global_defs {
notification_email {br/>cong.chen@czubitech.com
}
notification_email_from cong.chen@czubitech.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_MASTER #备份服务器上将MASTER改为BACKUP
}
vrrp_instance VI_1 {
state BACKUP #备份服务器上将MASTER改为BACKUP
interface ens32 #该网卡名字需要查看具体服务器的网口
virtual_router_id 51
priority 100 # 备份服务上将100改为90
nopreempt
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虚拟IP地址列表,即VIP,果有多个VIP,继续换行填写.
192.168.254.88
}
}

virtual_server 192.168.254.88 80 {
delay_loop 3 #(每隔3秒查询realserver状态)
lb_algo rr #(rr 算法)
lb_kind DR #(Direct Route) DR模式

persistence_timeout 50 #(同一IP的连接60秒内被分配到同一台realserver)

protocol TCP    #(用TCP协议检查realserver状态)real_server 192.168.254.131 80 {weight 1   #(权重)TCP_CHECK {connect_timeout 3    #(10秒无响应超时)nb_get_retry 3       #重试次数delay_before_retry 3  #重试间隔connect_port 80      #监测端口}}real_server 192.168.254.132 80 {weight 1      # 权重(权重越高处理的请求越多)TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.254.133 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}

}

重启keepalived
systemctl restart keepalived
查看状态
systemctl status keepalived

查看VIP状态
ip addr

backup配置
! Configuration File for keepalived

global_defs {
notification_email {br/>cong.chen@czubitech.com
}
notification_email_from cong.chen@czubitech.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_BACKUP #备份服务器上将MASTER改为BACKUP
}
vrrp_instance VI_2 {
state BACKUP #备份服务器上将MASTER改为BACKUP
interface ens32 #该网卡名字需要查看具体服务器的网口
virtual_router_id 51
priority 90 # 备份服务上将100改为90
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.254.88
#(如果有多个VIP,继续换行填写.)
}
}

virtual_server 192.168.254.88 80 {
delay_loop 3 #(每隔3秒查询realserver状态)
lb_algo rr #(rr 算法)
lb_kind DR #(Direct Route)

persistence_timeout 50 #(同一IP的连接60秒内被分配到同一台realserver)

protocol TCP    #(用TCP协议检查realserver状态)real_server 192.168.254.131 80 {weight 1   #(权重)TCP_CHECK {connect_timeout 3    #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.254.132 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.254.133 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}

}

重启keepalived
systemctl restart keepalived
查看状态
systemctl status keepalived

ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e3:f4:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.254.135/24 brd 192.168.254.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet 192.168.254.88/32 scope global ens32
valid_lft forever preferred_lft forever

显示虚拟IP 启动好了 注意:最后在每台ngnx 服务器上配置绑定VIP 并启动脚本
vi /etc/init.d/realserver
#!/bin/bash

SNS_VIP=192.168.254.88
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

chmod 755 /etc/init.d/realserver
service realserver start

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.254.88/32 brd 192.168.254.88 scope global lo:0
valid_lft forever preferred_lft forever

看到虚拟IP 就好了
(同理在其他nginx服务器都要操作)测试
[root@data-node1 ~]# curl 192.168.254.88

444444444444444444444444
[root@data-node1 ~]# curl 192.168.254.88
55555555555555555555555555
[root@data-node1 ~]# curl 192.168.254.88
22222222222222222222222222222222222222222222222222222
[root@data-node1 ~]# curl 192.168.254.88
444444444444444444444444
[root@data-node1 ~]# curl 192.168.254.88
33333333333333333333333333333
[root@data-node1 ~]# curl 192.168.254.88
111111111111111111111111111111111111111

转载于:https://blog.51cto.com/10158955/2138610

lvs+keepalived+nginx实现高性能负载均衡集群 高性能jsp集群相关推荐

  1. FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡

    ###Interesting things lvs+nginx的拓扑图 准备环境,基于上一篇[Diary Report 2018-1-3]关于FastDFS蛋疼的集群和负载均衡(十三)之LVS-DR环 ...

  2. LVS+Keepalived 实现高可用负载均衡

    一.Keepalived介绍 keepalived是在Linux系统下的一个轻量级的高可用解决方案,是使用C语言编写的,在 Keepalived 中实现了一组检查器,可以根据服务集群中服务器的健康状态 ...

  3. LVS+Keepalived实现高可用负载均衡

    本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...

  4. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  5. MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验

    http://blog.csdn.net/wzy0623/article/details/38757561 MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验 分类: MyS ...

  6. Linux下部署lvs+keepalived实现高可用负载均衡

    lvs+keepalived是什么? keepalived工作原理 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalive ...

  7. mysql从 lvs_mysql主从之LVS+keepalived+双主MySQL 负载均衡

    LVS(Linux Virtual Server)即Linux 虚拟服务器,是一个的开源负载均衡项目,目前LVS 已经被集成到Linux 内核模块中.LVS 是四层负载均衡,也就是说建立在OSI 模型 ...

  8. LVS + Keepalived 实现高可用负载均衡

    前言 本文以DR模式来进行实验! 首先这次研究这个LVS的前景,是因为公司要给客户的Master服务器做一个虚拟IP来提供访问,是在一个局域网下.想通过虚拟IP访问正式的环境,通过Master本身的I ...

  9. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

最新文章

  1. 亚马逊:我们提取了BERT的一个最优子架构,只有Bert-large的16%,CPU推理速度提升7倍...
  2. python使用正则表达式识别大写字母并在大写字母前插入空格
  3. python的pptx文档_通过python-pptx模块操作ppt文件
  4. golang 调用库函数错误 cannot refer to unexported name
  5. Unity3D:视物有点眩晕的原因
  6. Spring Cloud源码分析(四)Zuul:核心过滤器
  7. 2.vue的不更新特性-重用机制和key属性-data及其他字段-vue生命周期
  8. junit 单元测试插入操作事务回滚
  9. 口碑点餐相关问题FAQ
  10. PS基础入门(二、快速选择工具和魔棒的使用)
  11. java时间戳的单位_java – SimpleDateFormat – 解析时间戳,以毫秒为单位
  12. 排序(三)之快速排序 填坑法
  13. html万花筒相册旋转效果,jquery css3 3D万花筒图片相册展示特效
  14. 1.pygame简介
  15. 用C语言实现一个简单的一元线性回归算法
  16. 零粉丝直播带货,日赚两万是真是假?最新抖音直播玩法!
  17. java学习个人总结_Java学习的总结
  18. Keil5-MDK调用函数时代码自动补全功能及注意事项
  19. delphic oracle下载,Chemical Oracle
  20. 看尚学堂视频Java学习笔记

热门文章

  1. 第七:Pytes中的fixture大解剖(一)
  2. python wxpython backend wxagg_在wxPython中使用draw()(复制轴)绘制不正确
  3. python和perl的区别_Perl和Python之间有什么区别?Perl与Python的简单比较
  4. mysql 种子表_mysql之3种子查询
  5. Windows 下 PHP 开发环境配置系列四 - IIS+php+mysql
  6. eclipse 3.7 search 报resource is out of sync with the file system 解决方法
  7. 如何清除web 服务器的缓存
  8. 51单片机c语言程序控制,51单片机C语言编程基础及实例.pdf
  9. java web js_JAVA Web JS
  10. jquery $.get和$.post设置请求超时error处理