首先介绍一下环境:
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已经成功启动。
相关推荐
主机名IP地址操作系统组件备注环境说明架构图目录结构配置文件docker-compose配置文件keepalived配置文件keepalived检测脚本hapr
1. 主备模式:通过Heartbeat或Keepalived实现Nginx主备切换,确保服务连续性。 2. 负载均衡器:如LVS、HAProxy配合Nginx,提高整体系统的可用性和负载能力。 十、Nginx与微服务架构 1. 在微服务场景中的应用:作为...
准备keepalived,监听nginx的健康情况。 准备haproxy,提供一个虚拟的路径,统一的去接收用户得请求。#### 资源优化 > 客户端发送的请求可能是申请动态资源的,也有申请静态资源,但是都是去Tomcat中获取的#### ...
Linux技术文档,应用于Linux运维的技术,文档包含基础命令和操作、文件系统、nginx、apache、tomcat等web技术、lvs、haproxy负载技术,keepalived高可用,mysql及ELS等技术详解和实战操作。
本章可能涉及Tomcat的安装、部署Web应用、性能优化,以及通过Nginx或其他工具实现Tomcat集群的负载均衡,以提高服务的并发处理能力和稳定性。 第六章 LVS负载均衡群集:Linux Virtual Server (LVS) 是一种高性能的...
包含负载均衡、TCP网络、常见面试问题、数据库、Mysql、lvs+nginx、apache、tomcat、nginx、磁盘阵列、zabbix、Prometheus、Haproxy、LVS+keepalived、网络模型、redis、kafka、CI/CD、k8s、日志监控、
这包括了负载均衡技术,如Nginx和HAProxy的配置,以及它们如何分发请求到后端服务器以提高服务可用性。同时,书中还会讲解如何利用Apache、Tomcat等Web服务器进行集群部署,以及如何通过Keepalived实现高可用性。 ...
同时,他们必须熟悉一系列服务器和数据库技术,如Lvs、Haproxy、Keepalived、Nginx、Resin、Tomcat、Redis、Mongodb、Memcache、Mysql等的配置、使用和调优,具备DBA的工作经验。 其次,平台运维工程师需协助开发...
Linux 系统中的病毒可以通过安装防病毒软件、执行防病毒扫描、更新操作系统等方式来解决。 15. 共享目录挂载 可以使用 SMB 或 NFS 协议来挂载 Windows/Linux 共享目录。 16. Web 服务器负载架构 常见的 Web ...
23. **负载均衡实现方式**:硬件负载均衡器、软件负载均衡器(如LVS、HAProxy、Nginx等)。 24. **nginx四层负载**:通过修改TCP连接的目标IP和端口实现负载均衡。 25. **web服务**:如Apache、Nginx、Tomcat等,...
包括数据库(如MySQL、MariaDB、Oracle、SQL Server)、应用软件(如Nginx、Apache、PHP、Tomcat)、集群(如LVS、Keepalived、HAproxy、RHCS、F5)、虚拟化技术(如VMware、KVM、XEN)、操作系统(如Linux、Unix、...
- 熟练配置和优化LVS、Haproxy、Keepalived、Nginx、OpenResty、Resin、Tomcat、Redis、Mongodb、Memcache和Mysql等服务,具有丰富的DBA经验。 4. **工具使用** - 熟悉git进行版本控制,Jenkins进行持续集成,对...
1. 分布式组件:精通LVS、Haproxy、Keepalived、Nginx、Resin/Tomcat、Redis/Mongodb/Memcache、Mysql的配置和调优,具备DBA经验,能有效处理数据库性能问题。 2. 日志集群:熟悉Elk、Zookeeper、Kafka等分布式日志...
5. **高可用**:通过KeepAlived、HaProxy、Nginx等工具实现服务的冗余和故障切换,保证系统的持续可用。 6. **负载均衡**:HaProxy和Nginx不仅用于分发网络负载,还常用于反向代理,提升系统的响应速度和并发处理...
API Server、Service Gateway(如nginx+tomcat)则负责服务发现和网关管理。 企业构建部署测试流程包括Build、Package、Bake Image、Upload到VIP Registry和Cider,然后通过Jenkins Kubernetes Plugin进行自动化...
18. **Keepalived**:Keepalived是一个用于网络服务高可用性的工具,常与Nginx、HAProxy等配合使用,实现主备切换。 19. **Session**:在Web开发中,Session用于跟踪用户状态,存储用户在会话期间的信息。 20. **...
12. **Haproxy、LVS、Nginx(三选一)**:学习不同的负载均衡技术。 13. **Rpc和Dobbo**:远程调用协议,提高服务间通信效率。 14. **ActiveMQ队列**:消息中间件,处理异步通信。 15. **Hadoop**:分布式计算框架,...