`
g21121
  • 浏览: 694562 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux下安装Haproxy、Nginx、Tomcat、Keepalived

 
阅读更多

        首先介绍一下环境:

        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/,显示如下页面说明启动成功:

        另一台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也启动成功了。

 

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

        同样的,另一个服务器也是按此步骤安装haproxy。

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



 

 

        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已经成功启动。

  • 大小: 31.9 KB
  • 大小: 32.2 KB
  • 大小: 52.2 KB
  • 大小: 30.1 KB
  • 大小: 32 KB
分享到:
评论

相关推荐

    基于docker-compose实现haproxy+keepalived+teleport的负载均衡和高可用1

    主机名IP地址操作系统组件备注环境说明架构图目录结构配置文件docker-compose配置文件keepalived配置文件keepalived检测脚本hapr

    Nginx最佳实用培训-万达IT内部培训资料

    1. 主备模式:通过Heartbeat或Keepalived实现Nginx主备切换,确保服务连续性。 2. 负载均衡器:如LVS、HAProxy配合Nginx,提高整体系统的可用性和负载能力。 十、Nginx与微服务架构 1. 在微服务场景中的应用:作为...

    nginx 代理问题,负载均衡问题

    准备keepalived,监听nginx的健康情况。 准备haproxy,提供一个虚拟的路径,统一的去接收用户得请求。#### 资源优化 &gt; 客户端发送的请求可能是申请动态资源的,也有申请静态资源,但是都是去Tomcat中获取的#### ...

    Linux运维之路

    Linux技术文档,应用于Linux运维的技术,文档包含基础命令和操作、文件系统、nginx、apache、tomcat等web技术、lvs、haproxy负载技术,keepalived高可用,mysql及ELS等技术详解和实战操作。

    Linux防护与群集笔记.zip

    本章可能涉及Tomcat的安装、部署Web应用、性能优化,以及通过Nginx或其他工具实现Tomcat集群的负载均衡,以提高服务的并发处理能力和稳定性。 第六章 LVS负载均衡群集:Linux Virtual Server (LVS) 是一种高性能的...

    142道IT运维面试题

    包含负载均衡、TCP网络、常见面试问题、数据库、Mysql、lvs+nginx、apache、tomcat、nginx、磁盘阵列、zabbix、Prometheus、Haproxy、LVS+keepalived、网络模型、redis、kafka、CI/CD、k8s、日志监控、

    《跟老男孩学Linux运维:Web集群实战》带目录高清版.rar

    这包括了负载均衡技术,如Nginx和HAProxy的配置,以及它们如何分发请求到后端服务器以提高服务可用性。同时,书中还会讲解如何利用Apache、Tomcat等Web服务器进行集群部署,以及如何通过Keepalived实现高可用性。 ...

    平台运维工程师的岗位职责 (2).pdf

    同时,他们必须熟悉一系列服务器和数据库技术,如Lvs、Haproxy、Keepalived、Nginx、Resin、Tomcat、Redis、Mongodb、Memcache、Mysql等的配置、使用和调优,具备DBA的工作经验。 其次,平台运维工程师需协助开发...

    运维面试题目.doc

    Linux 系统中的病毒可以通过安装防病毒软件、执行防病毒扫描、更新操作系统等方式来解决。 15. 共享目录挂载 可以使用 SMB 或 NFS 协议来挂载 Windows/Linux 共享目录。 16. Web 服务器负载架构 常见的 Web ...

    运维142问不看一定后悔

    23. **负载均衡实现方式**:硬件负载均衡器、软件负载均衡器(如LVS、HAProxy、Nginx等)。 24. **nginx四层负载**:通过修改TCP连接的目标IP和端口实现负载均衡。 25. **web服务**:如Apache、Nginx、Tomcat等,...

    Centos7部署安装Zabbix3.2图文并茂手册

    包括数据库(如MySQL、MariaDB、Oracle、SQL Server)、应用软件(如Nginx、Apache、PHP、Tomcat)、集群(如LVS、Keepalived、HAproxy、RHCS、F5)、虚拟化技术(如VMware、KVM、XEN)、操作系统(如Linux、Unix、...

    平台运维工程师的岗位职责 (2).docx

    - 熟练配置和优化LVS、Haproxy、Keepalived、Nginx、OpenResty、Resin、Tomcat、Redis、Mongodb、Memcache和Mysql等服务,具有丰富的DBA经验。 4. **工具使用** - 熟悉git进行版本控制,Jenkins进行持续集成,对...

    平台运维工程师的岗位职责.docx

    1. 分布式组件:精通LVS、Haproxy、Keepalived、Nginx、Resin/Tomcat、Redis/Mongodb/Memcache、Mysql的配置和调优,具备DBA经验,能有效处理数据库性能问题。 2. 日志集群:熟悉Elk、Zookeeper、Kafka等分布式日志...

    一篇很好的架构文章

    5. **高可用**:通过KeepAlived、HaProxy、Nginx等工具实现服务的冗余和故障切换,保证系统的持续可用。 6. **负载均衡**:HaProxy和Nginx不仅用于分发网络负载,还常用于反向代理,提升系统的响应速度和并发处理...

    容器的持续集成与部署方案.pptx

    API Server、Service Gateway(如nginx+tomcat)则负责服务发现和网关管理。 企业构建部署测试流程包括Build、Package、Bake Image、Upload到VIP Registry和Cider,然后通过Jenkins Kubernetes Plugin进行自动化...

    IT 单词1

    18. **Keepalived**:Keepalived是一个用于网络服务高可用性的工具,常与Nginx、HAProxy等配合使用,实现主备切换。 19. **Session**:在Web开发中,Session用于跟踪用户状态,存储用户在会话期间的信息。 20. **...

    北大青鸟java课程的学习大纲.docx

    12. **Haproxy、LVS、Nginx(三选一)**:学习不同的负载均衡技术。 13. **Rpc和Dobbo**:远程调用协议,提高服务间通信效率。 14. **ActiveMQ队列**:消息中间件,处理异步通信。 15. **Hadoop**:分布式计算框架,...

Global site tag (gtag.js) - Google Analytics