欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下安装Haproxy、Nginx、Tomcat、Keepalived

程序员文章站 2022-07-04 09:14:38
...

        首先介绍一下环境:

        1)两台服务器(条件有限),IP分别为:192.168.40.128(server1真实IP),192.168.40.129(server2真实IP),192.168.40.200(虚拟IP)。

        2)两台服务器上分别安装Tomcat,HAProxy、Keepalived

        3)两台服务器上的HAProxy 互为热备。

        4)两台服务器上的Tomcat 是真正的内容提供方。

        5)安装过程以server1(192.168.40.128)为例,JDK我就不示范安装了。

        本文所提到的所有软件均可以到这个网址下载:https://fossies.org/linux/misc/

 

        1.防火墙配置

        1)查看状态

iptables -L -n

        2)添加开放端口

        使用iptables 开放如下端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

        3)保存

/etc/rc.d/init.d/iptables save

        4)重启服务

service iptables restart

        5)查看需要打开的端口是否生效

/etc/init.d/iptables status

 

 

        2.Tomcat

        Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

        1)安装

# cd /usr/local/software
# tar -zxvf apache-tomcat-8.5.30.tar.gz
# mv apache-tomcat-8.5.30 /usr/local/tomcat/

        2)配置

        删除 /usr/local/tomcat/webapps/ 下所有文件

        编写index.jsp文件:

vim /usr/local/tomcat/webapps/ROOT/index.jsp
#输入以下内容:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Server Info</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
String SERVER_NAME = request.getServerName();
String SERVER_ADDR = request.getLocalAddr();
String SERVER_SOFTWARE = getServletContext().getServerInfo();
String SERVER_PROTOCOL = request.getProtocol();
Integer SERVER_PORT = request.getServerPort();
String REQUEST_METHOD = request.getMethod();
String PATH_INFO = request.getPathInfo();
String PATH_TRANSLATED = request.getPathTranslated();
String SCRIPT_NAME = request.getServletPath();
String DOCUMENT_ROOT = request.getRealPath("/");
String QUERY_STRING = request.getQueryString();
String REMOTE_HOST = request.getRemoteHost();
String REMOTE_ADDR = request.getRemoteAddr();
String AUTH_TYPE = request.getAuthType();
String REMOTE_USER = request.getRemoteUser();
String CONTENT_TYPE = request.getContentType();
Integer CONTENT_LENGTH = request.getContentLength();
String HTTP_ACCEPT = request.getHeader("Accept");
String HTTP_USER_AGENT = request.getHeader("User-Agent");
String HTTP_REFERER = request.getHeader("Referer");
HashMap infoMap = new HashMap();
infoMap.put("SERVER_NAME", SERVER_NAME);
infoMap.put("SERVER_ADDR", SERVER_ADDR);
infoMap.put("SERVER_SOFTWARE", SERVER_SOFTWARE);
infoMap.put("SERVER_PROTOCOL", SERVER_PROTOCOL);
infoMap.put("SERVER_PORT", SERVER_PORT);
infoMap.put("REQUEST_METHOD", REQUEST_METHOD);
infoMap.put("SCRIPT_NAME", SCRIPT_NAME);
infoMap.put("DOCUMENT_ROOT", DOCUMENT_ROOT);
infoMap.put("REMOTE_HOST", REMOTE_HOST);
infoMap.put("REMOTE_ADDR", REMOTE_ADDR);
infoMap.put("CONTENT_TYPE", CONTENT_TYPE);
infoMap.put("CONTENT_LENGTH", CONTENT_LENGTH);
infoMap.put("HTTP_ACCEPT", HTTP_ACCEPT);
infoMap.put("HTTP_USER_AGENT", HTTP_USER_AGENT);
Iterator it = infoMap.keySet().iterator();
%>
<table border="1">
<%
while (it.hasNext()) {
Object o = it.next();
%>
<tr>
<td><%=o%></td>
<td><%=infoMap.get(o)%></td>
</tr>
<%}%>
</table>
</body>
</html>

        3)启动

        tomcat/bin 下是Tomcat的相关执行脚本,启动脚本为startup.sh,执行以下命令启动和关闭tomcat:

#启动
/usr/local/tomcat/bin/startup.sh
#关闭
/usr/local/tomcat/bin/shutdown.sh

        4)验证

        打开浏览器输入:http://192.168.40.128:8080/,显示如下页面说明启动成功:

Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java        另一台tomcat也是同样的操作步骤,这里就不赘述了。 

 


        3.HAProxy

        HAProxy 是一个使用C语言编写的*及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP 和HTTP 的应用程序代理。

        HAProxy特别适用于那些负载特大的web 站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在 当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web 服务器不被暴露到网络上。

        1)安装

#解压
tar -zxvf haproxy-1.6.9.tar.gz
cd haproxy-1.6.9
#安装
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

        参数说明:

        TARGET=linux2628:内核版本,使用uname -r查看内核版本。如:2.6.32-431.el6.x86_64,此时该参数就为"linux26";大于2.6.28的用"TARGET=linux2628"。

        ARCH=x86_64:系统位数。

        PREFIX=/usr/local/haprpxy:HAProxy安装路径。

        2)配置

        创建HAProxy配置文件:

# mkdir /etc/haproxy
# vim /etc/haproxy/haproxy.cfg
#输入以下配置信息:
global
    log 127.0.0.1 local0
    maxconn 40960
    chroot /usr/local/haproxy
    uid 99
    gid 99
    daemon
    nbproc 1
    pidfile /var/run/haproxy.pid

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 20480
     timeout connect    30s
    timeout client     60s
    timeout server     60s
    
listen web
    bind :80
    mode http
    balance roundrobin
    stats uri /haproxy-stats
    stats refresh 10s
    stats realm Haproxy\ statistics
    stats auth admin:admin
    option httpchk HEAD /index.jsp
    server web1 192.168.40.128:8080 weight 1 maxconn 10000 check inter 3s rise 3 fall 3
    server web2 192.168.40.129:8080 weight 1 maxconn 10000 check inter 3s rise 3 fall 3

        3)创建haproxy 服务

#链接haproxy 执行文件
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/
#复制安装包内的haproxy 启动脚本,haproxy的examples文件夹下有很多实例,大家可以参考和直接使用
cp /usr/local/software/haproxy-1.8.8/examples/haproxy.init /etc/rc.d/init.d/haproxy
#赋予执行权限
chmod +x /etc/init.d/haproxy

        4)启动

        运行以下命令,启动HAProxy:

# service haproxy start
Starting haproxy:                                          [  OK  ]

        4)验证

        在浏览器中输入:http://192.168.40.128/,并且每次刷新都会显示不同的页面就证明HAProxy也启动成功了。

Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java

 

        在浏览器中继续输入:http://192.168.40.128/haproxy-stats,页面将会显示HAProxy的监控页:

Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java        同样的,另一个服务器也是按此步骤安装haproxy。

        之后我们就要开始安装Keepalived了,在此之前我们先来看一下此时我们环境中的网络拓扑图:


Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
 

 

        4.Keepalived

        Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

        1)安装

安装Keepalived之前一般需要安装openssl-devel ,运行以下命令进行安装:

# yum -y install openssl-devel

然后正式开始安装Keepalived:

# tar -zxvf keepalived-1.4.3.tar.gz
# cd keepalived-1.4.3
# ./configure --prefix=/usr/local/keepalived
# make
# make install 

        2)配置

        修改默认的keepalived 配置文件:

# mkdir /etc/keepalived
# vim /etc/keepalived/keepalived.conf
# 添加以下内容
global_defs {
   notification_email {
     86312031@qq.com
   }
   notification_email_from root@localhost.localdomain
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_http_port {
    script "/etc/keepalived/check.sh"
    interval 3
    weight 2
  }
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 56
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
    chk_http_port
  }
unicast_src_ip 192.168.40.128
unicast_peer {   
 192.168.40.129
}
 virtual_ipaddress {
        192.168.40.200/24 dev eth0
    }

}

        其中check.sh 是一个检测脚本,内容非常简单,就是判断haproxy与keepalived是否存活,如出现问题则重启相关组件,以下是check.sh的源代码:

#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l ) -eq 0 ]; then
    service haproxy start
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l ) -eq 0 ]; then
    service keepalived stop
fi
~                                                      

        然后配置启动文件:

##/usr/local/software/keepalived-1.4.3是Keepalived安装包的解压地址
# cp /usr/local/software/keepalived-1.4.3/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
# chmod +x /etc/init.d/keepalived
# ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/

        3)启动

# service keepalived start

        4)验证

        在浏览器中输入配置的虚拟IP地址,如果显示正常,说明Keepalived已经成功启动。

Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java

  • Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
  • 大小: 31.9 KB
  • Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
  • 大小: 32.2 KB
  • Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
  • 大小: 52.2 KB
  • Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
  • 大小: 30.1 KB
  • Linux下安装Haproxy、Nginx、Tomcat、Keepalived
            
    
    博客分类: 我所了解的Java
  • 大小: 32 KB