随着业务增长,一台VPS往往无法满足需求。无论是为了提升可用性、分散风险,还是提高并发能力,多台VPS协同工作是常见的架构方案。本文介绍搬瓦工多台VPS的管理策略、批量运维工具和负载均衡配置。
常见的多VPS架构方案:
搬瓦工允许一个账户下购买多台VPS,也支持注册多个账户。建议:
购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣。全部方案请查看搬瓦工方案汇总。
通过SSH config文件配置所有VPS的连接信息:
# 编辑 ~/.ssh/config
Host bwg-web1
HostName 104.194.76.100
Port 28967
User root
IdentityFile ~/.ssh/id_ed25519
Host bwg-web2
HostName 104.194.76.101
Port 29156
User root
IdentityFile ~/.ssh/id_ed25519
Host bwg-db
HostName 185.232.65.50
Port 27843
User root
IdentityFile ~/.ssh/id_ed25519
# 连接示例
# ssh bwg-web1
# ssh bwg-db
Ansible是最流行的服务器批量管理工具,可以同时在多台VPS上执行命令和部署应用。
安装Ansible(在本地或管理服务器上):
# macOS
brew install ansible
# Ubuntu/Debian
apt install ansible -y
# pip安装
pip install ansible
配置主机清单 /etc/ansible/hosts:
[webservers]
web1 ansible_host=104.194.76.100 ansible_port=28967
web2 ansible_host=104.194.76.101 ansible_port=29156
[dbservers]
db1 ansible_host=185.232.65.50 ansible_port=27843
[all:vars]
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_ed25519
常用Ansible命令:
# 测试连通性
ansible all -m ping
# 在所有服务器上执行命令
ansible all -a "uptime"
# 批量更新系统
ansible all -a "apt update && apt upgrade -y"
# 只在web服务器组执行
ansible webservers -a "nginx -t"
# 批量传输文件
ansible webservers -m copy -a "src=./nginx.conf dest=/etc/nginx/nginx.conf"
Ansible Playbook示例 - 批量部署Nginx:
# deploy-nginx.yml
---
- hosts: webservers
tasks:
- name: 安装Nginx
apt:
name: nginx
state: latest
update_cache: yes
- name: 复制配置文件
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
notify: restart nginx
- name: 确保Nginx运行
service:
name: nginx
state: started
enabled: yes
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
# 执行playbook
# ansible-playbook deploy-nginx.yml
使用Nginx作为反向代理实现负载均衡,将流量分配到多台后端服务器:
# /etc/nginx/nginx.conf (负载均衡服务器上)
upstream backend {
# 轮询模式(默认)
server 104.194.76.100:80 weight=3;
server 104.194.76.101:80 weight=2;
# 健康检查:如果后端3次失败,暂停30秒
server 104.194.76.100:80 max_fails=3 fail_timeout=30s;
server 104.194.76.101:80 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 5s;
proxy_read_timeout 60s;
}
}
Nginx支持的负载均衡策略:
多台VPS之间的数据同步:
方案一:rsync实时同步
# 安装inotify-tools监控文件变化
apt install inotify-tools -y
# 文件变化时自动同步
inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f %e' \
-e modify,create,delete,move /var/www | while read line; do
rsync -avz --delete /var/www/ root@web2:/var/www/
done
方案二:MySQL主从复制
# 主服务器 my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_do_db = your_database
# 从服务器 my.cnf
[mysqld]
server-id = 2
relay-log = relay-log
# 从服务器配置复制
CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
START SLAVE;
多台VPS建议配置统一监控:
# 一键安装Netdata监控
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# 安装后访问 http://IP:19999 查看监控面板
Tip: 更多教程请查看新手教程,全部方案请查看搬瓦工方案汇总。