keepalive + nginx 实现高可用

什么是负载均衡呢?

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。 
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

负载均衡的种类

1)一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的

2)一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略.

这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档)

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。

优点:

1)可运行linux,并有 Windows 移植版。

2)在高连接并发的情况下,Nginx是Apache服务器不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应

配置 keepalive + nginx 

创建两台nginx服务器

我们想要使用Nginx那么就必须满足的四个条件:负载均衡的功能、转发、故障移除、恢复添和高可用

我们配置负载均衡的目的是在于当用户访问我们的服务器的时候, 首先会通过 Nginx服务器来决定转发到哪个Tomcat服务器上去给用户提供服务, 当然这个概率是我们通过权重来配置的. 经过Nginx指派之后, 我们就可以处理高并发的访问了, 这里就能达到负载均衡的目的.

搭建nginx

首先需要两台机器来搭建nginx和tomcat,本人用的是虚拟机(也可以用其他的设备代替),IP分别是:192.168.0.135、192.168.0.138,将nginx和tomcat上传至虚拟机中并安装完成,这里就不再复述这个过程了。

关闭Linux的防火墙, 否则的话启动了Nginx也是连接不上的。

配置nginx

进入到nginx目录(本人目录:/usr/local/nginx/),进入/conf/文件夹,执行 vim nginx.conf,代码如下:

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 1024m;
  client_body_buffer_size 10m;
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 30;
  server_tokens off;
  tcp_nodelay on;

  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  fastcgi_intercept_errors on;

  #Gzip Compression
  gzip on;
  gzip_buffers 16 8k;
  gzip_comp_level 6;
  gzip_http_version 1.1;
  gzip_min_length 256;
  gzip_proxied any;
  gzip_vary on;
  gzip_types
    text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
    text/javascript application/javascript application/x-javascript
    text/x-json application/json application/x-web-app-manifest+json
    text/css text/plain text/x-component
    font/opentype application/x-font-ttf application/vnd.ms-fontobject
    image/x-icon;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";
  ######################## default ############################
    #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;
    #tcp_nopush     on;
	#tcp_nodelay     on;
    #keepalive_timeout  0;
    #keepalive_timeout  65;
	#gzip  on;
  ######################### end ############################
  # my congig
  include /usr/local/nginx/myConf/*.conf;
}

注:最后的 include /usr/local/nginx/myConf/*.conf; 是为了更好的管理配置文件,所有创建个人的配置文件的文件夹,也可以在nginx.conf中编写。配置如下:
 

# admin server
upstream admin{
	server 192.168.0.138:18084;
	server 192.168.0.135:18084;
}
server{
	listen 8084;
	server_name _;
	location / {
		proxy_pass http://admin;
		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;
	}
}

admin 中的是两台tomcat服务。

重启Nginx服务器

测试tomcat服务 (本人直接用的自己的项目)

测试nginx

说明成功了

搭建Keepalived:(Keepalived需要依赖openssl)

这里如果我们的机器192.168.0.135 出现故障了呢? 那么怎么使用192.168.0.138上的Nginx进行转发呢? 怎么设置主机和备机呢? 如果主机死了怎么进行故障移除呢? 如果主机从不可用到可用状态又怎么进行恢复添加呢? 这些功能都是可以通过Keepalived来进行设置的

Keepalived原理:

首先Keepalived可以在主机上产生一个虚拟的ip, 这里叫做vip(v是virtual的意思):192.168.0.220, keepalived会将这个vip绑定到交换机上.当用户访问主机:192.168.0.135时, 交换机会通过这个ip和vip的对应找到192.168.0.135上的Nginx进行处理.
如果当有一天192.168.0.135上的Nginx挂掉的时候, Keepalived会立即在备机上生成一个相同的vip: 192.168.0.220, 当用户继续访问192.168.0.135时, 交换机上已经绑定了vip, 这时发现这个vip是存在于192.168.0.138上面的, 所以直接将请求转发到了备机上. 
如果主机被修复好能够继续对外提供服务时, 这时keepalived会将主机上继续生成这个vip, 同时回收在备机上生成的vip. 这个是通过心跳检查来判断主机已恢复使用.

安装Keepalived

上传Keepalived包

执行 tar -zxvf 命令解压Keepalived的安装包

进入Keepalived的文件夹,执行 ./configure 编译Keepalived;

执行 make && make install,安装Keepalived;

安装完成后的默认目录为 /usr/local/keepalived;

修改配置文件:

interface可以通过命令(ip addr获取)

复制配置

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

重新加载服务配置文件

systemctl daemon-reload

设置为开机启动

systectl enable keepavlived.service

操作命令

启动:suodo systemctl start keepalived

停止:suodo systemctl stop keepalived

重启:suodo systemctl restart keepalived

平滑重启:suodo systemctl reload keepalived

 

参考 :https://blog.csdn.net/java_zyq/article/details/90041267

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值