1. 安装 EPEL 仓库
EPEL(Extra Packages for Enterprise Linux)仓库提供了额外的软件包,安装 HAProxy 前需要先启用 EPEL 仓库。
sudo yum install epel-release -y
2. 安装 HAProxy
通过 EPEL 仓库安装 HAProxy。
sudo yum install haproxy -y
注意:如果服务器上已安装 Docker,可能会干扰 HAProxy 的安装。建议先关闭或卸载 Docker。
3. 验证 HAProxy 安装
安装完成后,验证 HAProxy 版本以确保安装成功。
haproxy -v
4. 下载 HAProxy 最新版本(可选)
如果需要安装最新版本的 HAProxy,可以从官网下载源代码并编译安装。
wget http://www.haproxy.org/download/2.5/src/haproxy-2.5.0.tar.gz
5. 安装 Node.js
Node.js 是运行 JavaScript 应用程序的环境,以下是安装步骤。
5.1 下载 Node.js
下载指定版本的 Node.js 二进制包。
wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz
5.2 解压并设置环境变量
将下载的包解压,并将其路径添加到环境变量中。
tar -xvf node-v16.14.2-linux-x64.tar.xz
export PATH=$PATH:/root/node-v16.14.2-linux-x64/bin
5.3 重新加载环境变量
确保环境变量生效。
source ~/.bashrc # 如果使用 .bashrc
# 或者
source ~/.bash_profile # 如果使用 .bash_profile
5.4 验证 Node.js 安装
检查 Node.js 是否安装成功。
node -v
6. 配置 HAProxy
HAProxy 的配置文件位于 /etc/haproxy/haproxy.cfg
,以下是配置示例。
6.1 编辑配置文件
使用文本编辑器打开配置文件。
sudo vi /etc/haproxy/haproxy.cfg
6.2 配置文件内容
globallog /dev/log local0log /dev/log local1 noticechroot /var/lib/haproxystats socket /run/haproxy/admin.sock mode 660 level adminstats timeout 30suser haproxygroup haproxydaemondefaultslog globalmode httpoption httplogoption dontlognulltimeout connect 5000timeout client 50000timeout server 50000frontend http_frontbind *:80default_backend nodes_backendbackend nodes_backendbalance roundrobinserver node1 xxx.xxx.xxx.xxx:3000 checkserver node2 yyy.yyy.yyy.yyy:3000 check
7. 配置解释
7.1 global
和 defaults
部分
- global:定义全局参数,如日志路径、用户权限等。
- defaults:定义默认选项,如日志格式、超时时间等。
7.2 frontend http_front
部分
- *bind :80:监听 80 端口,接收 HTTP 请求。
- default_backend nodes_backend:将请求转发到后端服务器组
nodes_backend
。
7.3 backend nodes_backend
部分
- balance roundrobin:使用轮询算法分发请求。
- server node1 xxx.xxx.xxx.xxx:3000 check:定义后端服务器
node1
,IP 地址为xxx.xxx.xxx.xxx
,端口为 3000,并启用健康检查。 - server node2 yyy.yyy.yyy.yyy:3000 check:定义后端服务器
node2
,IP 地址为yyy.yyy.yyy.yyy
,端口为 3000,并启用健康检查。
8. 总结
通过以上步骤,您可以成功安装并配置 HAProxy 和 Node.js。HAProxy 作为负载均衡器,可以将流量分发到多个后端服务器,而 Node.js 则为应用程序提供了运行环境。确保配置文件中的 IP 地址和端口与实际环境一致,并根据需要调整参数。