家庭数据中心系列 Roxy-WI部署与 HAProxy 实战:图形化管理的全新体验

1 前言

在日常使用中,我们常接触到一些以配置文件方式管理的优秀软件,例如 HAProxy、Nginx、 Apache和Keepalived。这些软件以其高性能和灵活性闻名,但它们的配置文件通常需要直接使用文本编辑器进行修改,对于那些熟悉这些软件配置文件格式的技术人员来说,使用文本编辑器直接编辑配置文件是一种高效且习惯性的操作方式。

然而,对于更习惯于图形化界面的用户来说,这种纯文本的操作方式可能显得复杂甚至令人望而却步。为了弥补这一点,社区中出现了许多提供图形界面(GUI)管理功能的项目,这些工具大大降低了操作门槛,使更多人能够轻松地使用这些强大的工具,例如,我在之前的一篇文章中曾介绍过一个为 Nginx 提供图形化管理功能的项目:nginxWebUI(参看文章:docker系列 使用docker基于nginxWebUI搭建图形化的nginx),就是专门用于nginx图形化管理的。

而今天我要向大家介绍的是一个更加综合且广受欢迎的图形化管理工具——Roxy-WI。这个项目不仅支持 HAProxy,还同时兼容 Nginx 和 Apache 的图形化配置管理(或许它的另一个名字更加让人熟悉:HAProxy-WI)。作为一个发展已久的项目,它凭借功能全面、界面友好,成为许多用户在配置管理上的首选。

注:其实之前支持HAproxy的GUI项目不只这一个,不过现在很多已经404了~。

2 Roxy-WI介绍

Roxy-WI 是一个开源的、功能强大的图形化管理工具,主要用于配置和管理负载均衡器以及相关的 Web 服务器软件,包括 HAProxyNginxApache。它的设计初衷是为管理员提供一个方便的 Web 界面,简化配置文件管理的过程,同时增强监控和操作的效率。以下是 Roxy-WI 的一些核心功能和特点:

核心功能

  1. 图形化配置管理

• 支持以直观的图形界面编辑、管理 HAProxy、Nginx 和 Apache 的配置文件,无需直接修改文本文件。

• 提供版本控制功能,可追踪配置变更历史,方便回滚。

  1. 监控和统计

• 内置实时监控功能,可查看负载均衡器和服务器的性能数据(如流量、连接数、延迟等)。

• 支持集成 Prometheus、Grafana 等工具进行扩展监控。

  1. 日志管理

• 提供日志查看功能,能够集中展示 HAProxy、Nginx 或 Apache 的日志信息。

• 支持通过 Web 界面快速过滤和分析日志。

  1. 集群管理

• 支持管理多个节点或实例,通过界面轻松同步配置到其他服务器。

• 提供分布式部署能力,适合复杂网络环境中的集群架构。

  1. 用户管理

• 提供多用户访问机制,可以设置不同用户权限(只读、编辑、管理员等)。

• 支持 LDAP 或本地账户的身份验证方式。

  1. 高级功能

• 支持调度任务,如定时重启服务或备份配置文件。

• 提供 SSL 证书管理功能,包括生成和部署证书。

• 可以通过 Telegram 或邮件实现告警通知。

适用场景

中小型企业:帮助没有专业运维团队的企业轻松实现高效的负载均衡管理。

开发环境:开发者可以通过 GUI 快速部署和测试负载均衡方案,而无需深入了解配置文件语法。

复杂网络环境:适用于需要同时管理多种负载均衡器和 Web 服务器的用户,尤其是有集群需求的场景。

技术架构

Roxy-WI 的后端主要使用 Python 编写,结合 SQLite 或其他数据库(Mysql、MariaDB)存储配置信息。其前端基于现代 Web 技术构建,提供简洁直观的用户界面。Roxy-WI 支持 Docker 部署,也可以直接运行在大多数 Linux 系统上,常见的安装方式包括:

• 使用官方安装脚本快速部署。

• 手动安装所需依赖并配置服务环境。

优点

• 降低运维门槛,适合没有深入掌握 HAProxy/Nginx/Apache 配置文件格式的用户。

• 功能全面,适用于生产环境和实验环境。

• 开源且社区活跃,提供持续更新和文档支持。

3 部署Roxy-WI

3.1 准备工作:了解Roxy-WI配置文件

这一步主要是为了提前了解Roxy-WI的配置文件”roxy-wi.cfg”,因为不管是使用docker方式,还是使用源码方式部署Roxy-WI的时候,最终都会涉及到该配置文件(配置文件的github地址如下:https://github.com/roxy-wi/roxy-wi/blob/master/roxy-wi.cfg)。以官方提供的默认配置为例进行基本的说明:

[main]
# Path to the files destination
fullpath = /var/www/haproxy-wi
log_path = /var/log/roxy-wi
lib_path = /var/lib/roxy-wi
# Change secret_phrase to 32 url-safe base64-encoded
secret_phrase = _B8avTpFFL19M8P9VyTiX42NyeyUaneV26kyftB2E_4=

[configs]
# Folders for configs
haproxy_save_configs_dir = {main:lib_path}/configs/hap_config/
keepalived_save_configs_dir ={main:lib_path}/configs/kp_config/
nginx_save_configs_dir = {main:lib_path}/configs/nginx_config/
apache_save_configs_dir ={main:lib_path}/configs/apache_config/

[mysql]
# By default Sqlite DB is used
enable = 0
mysql_user = roxy-wi
mysql_password = roxy-wi
mysql_db = roxywi
mysql_host = 127.0.0.1
mysql_port = 3306

从上内容最后的[mysql]部分可以看到,默认配置是使用Sqlite数据库(enable = 0就是禁用mysql兼容数据库的意思),如果要使用mysql或者mariadb数据库,参见文章后面详细配置步骤。

而如果选择使用默认的SQLite数据库,还需要在roxy-wi.cfg中添加如下配置:

# ----------------------------
# 数据库配置(SQLite)
# ----------------------------
[database]
# 使用 SQLite 数据库
db_type = sqlite
# SQLite 数据库文件的存储路径
db_path = /var/lib/roxy-wi/roxy-wi.db  # 根据你的需求修改路径

以下内容是roxy-wi使用Sqlite数据库,并用来管理HAProxy的配置文件示范配置:

# Roxy-Wi 配置文件

# ----------------------------
# 数据库配置(SQLite)
# ----------------------------
[database]
# 使用 SQLite 数据库
db_type = sqlite
# SQLite 数据库文件的存储路径
db_path = /var/lib/roxy-wi/roxy-wi.db  # 根据你的需求修改路径

# ----------------------------
# HAProxy 配置
# ----------------------------
[haproxy]
# HAProxy 配置文件的路径
haproxy_cfg_file = /etc/haproxy/haproxy.cfg
# HAProxy 的状态页面和其他运行时信息的路径
haproxy_status_url = http://haproxy宿主机IP:8085  # 如果你需要 HAProxy 状态页面

# ----------------------------
# Web 界面配置
# ----------------------------
[web]
# 设置 Roxy-Wi Web 界面监听的 IP 和端口
listen_ip = 0.0.0.0  # 监听所有 IP 地址
listen_port = 443   # 可以根据需要更改端口

# ----------------------------
# 用户管理
# ----------------------------
[users]
# 管理员账号配置
admin_user = admin
admin_pass = your_secure_password  # 请设置一个强密码
# 你可以根据需要添加其他用户
# user1 = password1
# user2 = password2

# ----------------------------
# 日志配置
# ----------------------------
[logging]
# 启用日志记录
log_enabled = true
# 设置日志文件路径
log_file = /var/log/roxy-wi/roxy-wi.log
# 日志级别(可选值:info, debug, warning, error)
log_level = info

# ----------------------------
# 其他设置(如API访问、自动备份等)
# ----------------------------
[api]
# 是否启用 API(如果你需要通过 API 来管理 HAProxy)
api_enabled = false  # 如果不使用 API,可以设置为 false

[backup]
# 配置是否自动备份 HAProxy 配置
backup_enabled = false  # 如果你不需要自动备份,可以关闭
# 备份文件存储路径
backup_dir = /var/backups/haproxy/

# ----------------------------
# 监控设置(可选)
# ----------------------------
[monitoring]
# 启用 HAProxy 监控
monitoring_enabled = true
# 配置 HAProxy 监控的频率(秒)
monitoring_interval = 60  # 每60秒监控一次

解释:

  1. 数据库配置

• db_type = sqlite:指定使用 SQLite 作为数据库,也可以用mariaDB,只不过我就管理一个HAProxy,实在是用不上mariaDB~。

• db_path = /var/lib/roxywi/roxy-wi.db:设置 SQLite 数据库文件的路径,通常你可以选择一个安全的路径。

  1. HAProxy 配置

• haproxy_cfg_file = /etc/haproxy/haproxy.cfg:指定 HAProxy 配置文件的路径。

• haproxy_status_url = http://127.0.0.1:8000:指定 HAProxy 的状态页面 URL,这通常用于健康检查和监控。

  1. Web 配置

• listen_ip = 0.0.0.0:Web 界面将监听所有 IP 地址,你可以将其限制为特定的 IP 地址,保证安全性。

• listen_port = 8000:Web 界面的访问端口,确保该端口没有被其他应用占用。

  1. 用户配置

• admin_user = admin 和 admin_pass = your_secure_password:配置管理员账户的用户名和密码。请务必设置一个强密码。

• 可以根据需要添加其他用户。

  1. 日志配置

• log_enabled = true:启用日志记录。

• log_file = /var/log/roxy-wi/roxy-wi.log:指定日志文件的存储路径。

• log_level = info:日志的级别。你可以根据需要选择不同的级别,如 debug、warning、error。

  1. API 配置

• api_enabled = false:如果不使用 API 来管理 HAProxy,保持为 false。如果你需要 API,可以将其设置为 true,并进行额外配置。

  1. 自动备份配置

• backup_enabled = false:如果你不需要自动备份 HAProxy 配置文件,可以禁用该功能。如果需要备份,可以启用并设置备份目录。

  1. 监控设置

• monitoring_enabled = true:启用 HAProxy 监控。

• monitoring_interval = 60:每 60 秒收集一次 HAProxy 的监控数据。

3.2 docker部署

3.2.1 Roxy-WI官方对docker部署的态度

官方其实不推荐docker方式部署Roxy-WI:

image.png

为什么 Roxy-WI 官方不推荐使用 Docker 部署生产环境?

Roxy-WI 官方明确表示,Docker 部署方式主要适用于开发、测试或学习环境,而并不适合生产环境,这背后的原因主要包括以下几个方面:

1. 安全性问题

隔离性不足:Docker 提供了容器化环境,但其隔离性不如虚拟机(VM)强。如果容器配置不当或存在安全漏洞,可能会对宿主机系统带来风险,尤其是生产环境中运行关键服务时。

更新与补丁问题:官方可能未对 Docker 镜像提供及时的安全更新或补丁,尤其是针对容器化环境的安全漏洞。而生产环境需要更高的安全性和可靠性。

2. 性能问题

资源隔离开销:虽然 Docker 提供资源隔离功能,但在高性能需求场景中,容器化带来的开销可能会降低系统效率。例如,当 Roxy-WI 需要处理复杂配置文件和大流量服务时,容器化环境可能会成为瓶颈。

优化难度:相比直接在操作系统上运行,容器化的系统资源分配和性能优化可能不如源码部署高效,尤其是在处理大量并发任务时。

3. 长期稳定性与兼容性问题

镜像的不稳定性:Docker 镜像可能没有经过长期的严格测试。在 Docker 引擎版本更新或镜像变化时,某些功能可能失效或出现不兼容问题,影响生产环境的稳定性。

容器化支持不足:Roxy-WI 并未完全为容器环境优化。其管理的多种服务(如 HAProxy、Nginx 和 Apache)涉及复杂的配置和硬件访问需求,容器化可能增加兼容性问题。

4. 缺乏持久化存储

数据持久化挑战:Docker 容器默认是临时存储,重启后可能会丢失数据。虽然可以通过挂载卷(Volumes)来持久化数据,但配置不当可能导致生产环境中的关键配置文件丢失。

文件系统限制:Roxy-WI 需要频繁修改配置文件或使用持久化数据,容器的文件系统特性可能导致额外的复杂性,不利于长期维护。

5. 调试和维护复杂性

调试困难:容器化环境中的问题定位通常比直接在物理机或虚拟机中部署复杂。尽管 Docker 提供了一些调试工具,但生产环境中故障排查的难度较高。

日志管理问题:容器化的日志管理方式不同于传统环境,可能需要额外配置以确保日志能够正确收集和持久化,尤其是在容器频繁重启或迁移时。

6. 源码部署更方便管理多种应用

Roxy-WI 的核心功能是管理多种反向代理和负载均衡工具,包括 HAProxyNginxApache。源码部署方式可以:

• 直接访问宿主机上的所有配置文件和服务,无需复杂的挂载或映射。

• 更高效地管理服务的重启和更新操作,减少容器化引入的权限管理和交互问题。

• 提供更强的灵活性,适应生产环境中复杂的部署需求。

7. 官方推荐的部署方式

Roxy-WI 官方建议通过源码或传统操作系统安装进行部署。相比于容器化,这种方式经过更严格的长期测试和验证,能够提供更高的稳定性和可靠性,同时更易于调试和维护。

结论

Docker 部署适用于开发、测试或学习环境,因为它简化了安装和部署过程。但在生产环境中,由于安全性、性能、兼容性以及调试维护等方面的限制,官方更推荐使用源码或操作系统级的部署方式,尤其是 Roxy-WI 需要管理 HAProxy、Nginx 和 Apache 等多种服务的场景下,源码部署能提供更高的灵活性和可靠性。

注:我在写这篇文章时,本来没准备接收官方的建议,就打算使用docker方式部署+SQLite数据库搞定完事的,结果遇到了一些稀奇古怪的问题(明明正常设置但是有些页面正常、有些却一直加载等),搞得最后干脆还是源码部署+MariaDB数据库~。

3.2.2 使用docker run格式进行部署

1、创建工作目录

mkdir -p /docker/roxy-wi/data
mkdir -p /docker/roxy-wi/config

2、使用docker run命令部署:

docker run --name roxy-wi -d --privileged --restart=always --net=public-net \
-v /docker/roxy-wi/data:/var/roxy-wi/lib \
-v /docker/roxy-wi/config:/etc/roxy-wi \
-p 8443:443 \
registry.roxy-wi.org/roxy-wi

3.2.3 使用docker-compose方式进行部署

1、创建工作目录

mkdir -p /docker/roxy-wi/

2、创建docker-compose.yml

vim /docker/roxy-wi/docker-compose.yml

然后将以下内容粘贴进去并保存:

version: '3.8'

services:
  roxy-wi:
    image: registry.roxy-wi.org/roxy-wi
    container_name: roxy-wi
    restart: always
    privileged: true
    networks:
      - public-net
    ports:
      - "8443:443"
    volumes:
      - /docker/roxy-wi/data:/var/roxy-wi/lib
      - /docker/roxy-wi/config:/etc/roxy-wi

networks:
  public-net:
    external: true

3、拉起Roxy-WI的容器

cd /docker/roxy-wi
docker-compose up -d

另:因为docker并不是推荐的Roxy-WI的部署方式,所以我也就偷下懒,不详细注释参数的意义了,至于那些”明知山有虎,偏向虎山行”的朋友,请自行研究一下,也很简单。

3.3 APT方式源码部署

3.3.1 说在前面

关于源码部署,建议大家使用ubuntu的TLS(长期支持版本,比如22.04),我按照之前习惯的在PVE上使用了debian的LXC来部署(debian系统并不在官方直接支持的范围内):

image.png

结果出了一堆问题,实在是把我搞得有点焦头烂额,就干脆换成ubuntu 22.04版本的LXC,然后就顺利完成了。

另外,如果非要使用debian也行,可以直接使用github上Roxy-WI主页的代码,使用git命令复制到本地后进行手动安装(github链接地址:https://github.com/roxy-wi/roxy-wi),只不过,需要自己部署Apache或者Nginx,我觉得实在是有点折腾,就放弃了。

注1:网上一些也是使用git方式来部署的教程,有些要使用roxy-wi.py来启动服务,有些要使用setup.py来安装,关键这2个文件在github的Roxy-WI主页里根本找不到,搞得我一头雾水~。

注2:其实使用APT方式就是把Apache和Roxy-WI源码合在一起部署好,省时省心。

注3:不清楚如何使用PVE创建LXC的朋友,可以参考我之前的一篇文章:docker系列 使用LXC基于Turnkey-gameserver架设我的世界(Minecraft)基岩版服务器

3.3.2 准备工作(可选)

1、安装并升级pip版本

ubunut 22.04默认安装了python3,但是并未安装pip,而使用apt命令安装Roxy-WI相关组件时,虽然也会装pip,但是因为pip版本较低(22.02),所以不支持”–break-system-packages”选项(至少需要23.3版本),所在采用默认安装的时候会出现如下输出:

image.png

所以建议在正式安装Roxy-WI之前使用如下命令进行pip安装和确认默认安装的pip版本:

apt update
apt install python3-pip
pip3 --version


然后使用如下命令升级pip版本:

python3 -m pip install --upgrade pip

确认升级成功:

image.png

2、修复distro-info软件包

升级pip版本之后还会出现如下报错:

image.png

这是因为distro-info 软件包中的版本号 1.1build1 格式不符合标准的 PEP 440 版本规范,而 pip 在新版中更严格地遵循该规范,因此解析该版本时会失败,所以可以运行如下命令进行修复:

apt install --reinstall python3-distro-info

3、提前创建roxy日志目录

在安装之后,虽然最终会创建”/var/log/roxy-wi“目录,但是在安装过程中会频繁出现这个提示

image.png

强迫症表示看着很不爽,所以建议提前创建好:

mkdir -p /var/log/roxy-wi

注1:直接使用ubuntu 24.04版本可能没有这些问题,不过因为我有现成的22.04版本的LXC模板,就懒得去折腾24.04了,况且新版本未必有老版本稳妥~。

注2:最好是有科学的环境。

3.3.3 使用apt命令安装Roxy-WI

1、添加Roxy-WI仓库地址

echo \
  "deb [arch=amd64, trusted=yes] https://repo.roxy-wi.org/ubuntu \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/roxy-wi.list > /dev/null

2、更新仓库

apt update

3、安装Roxy-WI

apt-get install roxy-wi roxy-wi-checker roxy-wi-metrics roxy-wi-smon roxy-wi-portscanner roxy-wi-keep-alive roxy-wi-socket

4、确认Roxy-WI默认配置文件:

cat /etc/roxy-wi/roxy-wi.cfg

image.png

3.3.4 配置Roxy-WI使用mariadb数据库(可选)

文章前面在介绍Roxy-WI配置文件的时候提到过:Roxy-WI默认是使用SQLite数据库。这在只使用Roxy-WI管理一个实例的时候性能倒是够用的,但是,一旦同时管理多个示例,就比较勉强了,这时候就需要使用外部数据库:mysql或者mariadb,以下是mariadb的配置流程示范:

1、在数据库上新建Roxy-WI的库和用户

这里大家自行选择习惯的数据库:如果要使用mariaDB或者mysql,需要将”enable = 0″改为”enable = 1″,同时需要在本地或者远程部署的数据库中(使用mysqldump命令登录进数据库),使用以下命令初始化数据库:

CREATE DATABASE roxy-wi;
CREATE USER 'roxy-wi'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON roxy-wi.* TO 'roxy-wi'@'%';
FLUSH PRIVILEGES;

注:如果本地或者远程部署的数据库支持远程管理,也可以用DBeaver之类的客户端进行初始化,具体步骤可以参看我之前的文章:奇技淫巧系列 手动初始化数据库:新建空库以及给对应用户赋予权限

2、在部署Roxy-WI的设备上安装MariaDB的客户端:

apt-get install mariadb-client libmariadb-dev

3、在部署Roxy-WI的设备上修改”roxy-wi.cfg”配置文件指向MriaDB数据库:

[mysql]
# By default Sqlite DB is used
enable = 1
mysql_user = roxy-wi # 需要和第一部分创建的用户名一致
mysql_password = your_password # 需要和第一部分创建的密码一致
mysql_db = roxy-wi # 需要和第一部分创建的库名一致
mysql_host = 127.0.0.1 #如果roxy-wi和数据库在同一台设备上,则可以使用127.0.0.1;如果不是同一台设备,则这里填写数据库设备的IP地址
mysql_port = 3306 # 填写mariadb数据库的实际对外服务端口

4、使用官方脚本初始化MariaDB数据库

在部署Roxy-WI的设备上运行 create_db.py 脚本,该脚本位于”/var/www/haproxy-wi” 文件夹中:

python3 /var/www/haproxy-wi/create_db.py

如果初始化正常会出现如下输出:

image.png

且可以看到MariaDB数据库中原本内容是空的Roxy-WI库中已经出现了大量的表,说明初始化成功:
image.png

5、创建Roxy-WI对应的service以便于以后管理(可选)

使用APT方式安装Roxy-WI的本质是直接使用Apache为Roxy-WI来提供服务(其实就是便利型的手动安装,Roxy-WI在apache配置文件的路径为/etc/apache2/sites-enabled/roxy-wi.conf),这和我们日常习惯的systemd类型的服务不同(无法使用systemctl reload、restart等命令进行直接管理(倒是可以使用systemctl restart apache2或者systemctl reload apache2来实现,但是强迫症患者表示很不喜欢)。

所以,可以手搓一个Roxy-WI.service来作为单独管理Roxy-WI的快捷方式,以符合我们的习惯,按照以下步骤进行操作。
新建一个Roxy-WI.service文件:

vim /etc/systemd/system/roxy-wi.service

然后将以下内容粘贴进去并保存:

[Unit]
Description=Roxy-WI (via Apache)
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart apache2
ExecReload=/bin/systemctl reload apache2
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

重新加载 Systemd 配置,将新创建的 Roxy-WI 服务设为开机自启,并立即启动该服务:

systemctl daemon-reload
systemctl enable roxy-wi
systemctl start roxy-wi

之后,就能使用systemctl reload roxy-wisystemctl restart roxy-wi单独管理Roxy-WI了。

4 初始化Roxy-WI

4.1 登录Roxy-WI

使用”https://roxy-wi宿主机IP“登录Roxy-WI的web界面:

image.png

输入用户名和密码登陆(默认的用户名和密码均为admin):
image.png

点击右上角的”admin”可自行修改密码:
image.png


如果想要实现使用自定义域名访问Roxy-WI、本地80端口到443端口的重定向(如果使用了CDN,则需要在CDN供应商侧进行配置)、自定义SSL证书等操作,均需要修改Roxy-WI对应的Apache 配置文件:

vim /etc/httpd/conf.d/roxy-wi.conf

如果要实现使用自定义域名进行访问,找到以下行并将 “roxy-wi.example.com 替换为您的域名:

<VirtualHost *:443>
    ...
    ServerName my_domain.local
    ...
</VirtualHost>

如果要启用从端口 80 到端口 443 的重定向,请将以下行添加到配置文件中:

<VirtualHost *:80>
        ServerName my_domain.local
        Redirect permanent "/" "https://my_domain.local/"
</VirtualHost>

如果要使用自定义证书,请编辑以下行:

<VirtualHost *:443>
    ...
    SSLEngine on
    SSLCertificateFile /var/www/haproxy-wi/app/certs/haproxy-wi.crt
    SSLCertificateKeyFile /var/www/haproxy-wi/app/certs/haproxy-wi.key
    ...
</VirtualHost>

4.2 添加需要管理的服务所在的目标服务器

4.2.1 为Roxy-WI所在设备添加SSH凭据

1、使用ssh-keygen命令生成密钥对(可选):

ssh-keygen -t rsa -b 4096 -f /var/lib/roxy-wi/keys/roxywi_id_rsa

之后会在路径/var/lib/roxy-wi/keys/下生成私钥文件”roxywi_id_rsa”和公钥文件”roxywi_id_rsa.pub”

2、将Roxy-WI设备的公钥文件复制到haproxy所在的目标服务器(假设服务器IP为192.168.1.100):

ssh-copy-id -i /var/lib/roxy-wi/keys/roxywi_id_rsa.pub [email protected]

如果Roxy-WI所在的设备和目标服务器为同一台设备,还可以直接手动复制:

mkdir -p /root/.ssh # 可选步骤,如果没有/root/.ssh目录才需要创建
cat /var/lib/roxy-wi/keys/roxywi_id_rsa.pub >> /root/.ssh/authorized_keys

3、在”Admin area”-“SSH credentials”-“Add”为Roxy-WI所在设备添加一个SSH凭证(用于使用ssh登录到其他安装了HAproxy、Nginx、Apache应用的设备进行管理):

image.png

image.png

添加成功:
image.png

然后上传之前生成的私钥文件(/var/lib/roxy-wi/keys/roxywi_id_rsa)的内容:

image.png

注:使用Roxy-WI基于”SSH key”方式管理haproxy有个前提,就是haproxy所在的目标服务器要能够支持ssh公钥方式登录:即在”/etc/ssh/sshd_config”文件中,”PubkeyAuthentication yes”的设置要生效(对配置ssh公钥登录的详细操作感兴趣的朋友可以参考文章:debian系列 配置ssh公钥登录)。


使用”SSH key”是官方推荐的默认值(因为安全),但是并不是必须的,如果SSH不想使用基于公钥方式进行登录,也可以使用传统的用户名密码方式登录SSH,只需要在添ssh凭证时候取消勾选”Enable SSH key”,即可出现填写密码的框:

image.png


4.2.2 添加需要管理的应用所在的目标服务器(以HAproxy的服务器为例)

在”Admin area”-“Servers”-“Add”添加haproxy所在的宿主机:

image.png

image.png

成功添加:

image.png

添加之后可以直接测试Roxy-WI和haproxy所在的设备之间是否能够使用ssh成功连接:
image.png

5 在Roxy-WI上添加需要管理的服务

5.1 安装需要Roxy-WI管理的服务(以HAproxy为例)

点击”Installation”-“Proxy service”,选择对应的server来安装HAproxy:

image.png

安装成功后,就可以在HAproxy部分看到内容了:
image.png

注1:一开始就计划使用Roxy-WI来管理HAproxy的朋友,如果HAproxy是全新部署,那么可以在Roxy-WI中来安装HAproxy(Nginx、Apache、Keepalived同样如此),可以省不少事。

注2:对于”Avaliable versions”,你可以选择期望安装软件的任意版本,比如haproxy的最新版3.1.1-1,但是,能不能装要看目标服务器上apt仓库的最新版本,比如我这里目标服务器ubuntu 22.04的apt仓库最新是2.4.24,所以,哪怕你期望安装3.1.1-1,最终的实际版本也只能是2.4.24。

注3:如果是使用Roxy-WI来安装Nginx、Apache也是一样的流程,我就不一一介绍了。

5.2 添加目标服务器上已有的HAproxy服务(可选)

如果是之前已经在使用中的HAproxy,而现在只是想用Roxy-WI来管理(确保HAproxy的服务是通过标准的服务管理工具,如 systemd来管理;确保HAProxy 的状态,统计页面日志配置 必须正确设置),也不麻烦,按照前面的正常步骤添加SSH凭证、添加服务器,然后在服务器中的Services中添加已有的服务,还是以HAproxy为例:

image.png

image.png

image.png

只不过,如果自己安装HAproxy的时候有一些自定义的配置(比如没有使用默认路径),最后还需要在”Admin area”-“Settings”-“HAproxy”部分进行一下配置:

image.png

如果需要管理的服务不是HAproxy,而是Nginx、Apache,也是类似的流程。

6 使用Roxy-WI管理应用(以HAproxy为例)

6.1 概述


这部分内容就是如何使用Roxy-WI来管理应用,不过,我只从Roxy-WI的使用角度简单的介绍下,因为如果还要从应用角度(比如HAproxy、Nginx、Apache)来讲的话,不但这篇文章内容会主次不分,而且可能反而啥都讲不清楚。再者说了,都已经开始研究Roxy-WI来管理应用的朋友,肯定本身该知道的也知道了,我再讲些有得没的,估计还要被鄙视~。


Roxy-WI 的 HAProxy 功能提供了一个用户友好的界面,用于管理和监控 HAProxy 的配置和状态。它简化了 HAProxy 的部署和管理过程,允许用户轻松编辑配置文件、查看实时流量统计、检查健康状态、以及处理负载均衡规则的优化。通过这个界面,用户可以有效地管理多个 HAProxy 实例、创建和删除前端与后端服务、调整负载均衡策略,确保高可用性和流量分配的灵活性。

下图是使用Roxy-WI管理HAproxy的时候所提供的功能模块:

image.png

接下来,我将其中比较重要的功能简单的过一遍。

6.2 Overview

“Overview” 功能项提供了一个直观的界面,帮助用户实时监控和管理 HAProxy 实例。它展示了 HAProxy 实例的关键性能数据,包括流量统计(如 Bytes In 和 Bytes Out)、当前和总会话数等信息。此外,用户可以通过该界面直接执行管理操作,如启动、重载、重启或停止 HAProxy 实例:

image.png

这一功能项帮助用户快速了解 HAProxy 的整体工作情况,识别潜在的性能瓶颈或配置问题,从而为进一步的优化和管理提供依据。

6.3 Config

“Config” 功能项主要用于配置和管理 HAProxy 的各种设置。通过该功能项,用户可以编辑 HAProxy 的配置文件,进行负载均衡策略、监听端口、后端服务器等的配置。它提供了一个友好的图形化界面,简化了 HAProxy 配置过程,避免了直接手动编辑复杂的配置文件,适合希望直观管理 HAProxy 配置的用户。

image.png

然后可以看到选择的haproxy实例对应的haproxy.cfg的内容:
image.png

比如我想看”frontend http_front”配置分段的内容,只需要点击即可展开:
image.png

点击上图右边的Edit之后,可以直接进入编辑模式:
image.png

可以看到,即便对于不熟悉haproxy.cfg配置文件内容的朋友,也可以直接使用Roxy-WI的Config功能项对haproxy.cfg的内容进行管理,而对于熟悉配置文件内容的朋友,更是如虎添翼了。

注:对于HAProxy配置不熟悉的朋友,可以参考我之前的文章:HAProxy 实战教程:多场景部署与常用功能配置解析

6.4 Stats

“Stats”功能项用于监控和查看 HAProxy 的实时统计数据。通过该功能,用户可以直观地查看前端(Frontend)、后端(Backend)以及各个服务器的连接状态、请求数、错误率、流量等关键指标,这有助于快速诊断负载均衡的运行状况、识别异常流量,并优化服务性能。此外,Roxy-WI 通过 Web 界面整合了 HAProxy 的内置统计页面,使运维人员无需手动配置 HAProxy 的 stats 监听项即可轻松获取相关数据:

image.png

6.5 Logs

“Logs” 功能项用于查看 HAProxy 的实时日志,帮助用户监控流量情况、排查故障和分析请求处理过程。该功能提供了日志的可视化界面,使用户无需登录服务器或手动查找日志文件,即可直接在 Web 界面查看和过滤日志内容。通过 “Logs”选项,用户可以快速发现连接错误、后端服务器状态变化或异常请求,提升运维效率,便于调试 HAProxy 配置。

不过,虽然在Roxy-WI的”Admin area”-“Settings”里设置了读取HAProxy日志的路径:

image.png

但是默认情况下,其实在”Logs”里是看不到日志的,这是因为HAProxy并不会直接写日志,而只是负责发送日志到rsyslog,随后由rsyslog写入 /var/log/haproxy/目录。所以,如果要”Logs”能正常显示HAProxy日志,需要先修改haproxy.cfg,在global部分添加以下配置:

global
    log /dev/log local0 info
    log /dev/log local1 notice

确认是否有/var/log/haproxy/这个路径,没有的话自行创建:

mkdir -p /var/log/haproxy/

在rsyslog中创建HAProxy的配置文件:

vim /etc/rsyslog.d/haproxy.conf

然后将以下内容粘贴并保存:

$ModLoad imudp
$UDPServerRun 514
local0.*    /var/log/haproxy/haproxy.log
local1.*    /var/log/haproxy/haproxy.notice.log

然后重新载入HAProxy的配置以及重启rsyslog:

systemctl reload haproxy
systemctl restart rsyslog

之后即可在Logs中查看HAProxy日志。

6.6 Add proxy

“Add Proxy” 功能项用于快速添加新的代理(负载均衡)配置。通过这个功能,用户可以在 Web 界面中轻松创建和配置新的负载均衡,包括前端(Frontend)和后端(Backend)的设置。它简化了 HAProxy 配置的过程,用户只需填写相关参数,如监听端口、后端服务器、负载均衡策略等,系统会自动生成相应的配置代码并应用,这使得管理多个代理变得更加高效,并且避免了手动编辑复杂配置文件的麻烦:

image.png

创建前端:
image.png

创建后端:
image.png

SSL卸载:
image.png

其他几个界面我就不一一截图了,总的来说,对于不习惯CLI界面的朋友来说,真的是非常友好了。

7 总结

对于HAProxy而言,Roxy-WI应该算是目前最优秀的图形管理工具了。至于Nginx和Apache的图形化管理,虽然Roxy-WI表现也很好,但是毕竟还有不少其他的选择,所以本文我才选择HAProxy来做示范。

不过,还是那句话,Roxy-WI并不是必须的,如果真的熟悉HAProxy(Nginx、Apapche等)的配置文件,一个vim就足够了~,外加自带的统计界面(其实Roxy-WI基本就是直接引用这个~):

image.png

日常使用绝对足够了。

注1:其实文章写到后半段我就后悔了,HAProxy通过配置文件管理太方便了,改完之后使用命令systemctl reload haproxy重新载入内容,当前连接都不会中断的,还要啥自行车(使用Roxy-WI进行相同的操作要浏览器访问Roxy-WI,还要点好几下鼠标~),并且,Roxy-WI提供的统计实际上就是直接调用HAProxy自身的统计,也没有什么额外的优势。相比之下,折腾Roxy-WI本身倒是花费了我大量时间,现在想来非常不值,可是当时已经上了贼船了,文章也写了一大半了,不得不坚持写完。当然,这不是说Roxy-WI不好,只是从我自身研究Roxy-WI只是为了方便管理HAProxy这个初衷而言,简直就是”捡了芝麻,丢了西瓜”,问题的关键其实在于:HAProxy还需要图形化管理?最后只是希望本文能对那些需要使用Roxy-WI来管理HAProxy、Nginx、Apache等软件的朋友有所帮助了,对我自己,已经确认是毛用没有了~~~~。

注2:Roxy-WI也提供了官方的demo站点,感兴趣的朋友可以直接体验一下:Roxy-WI demo site,用户名/密码:admin/admin。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       
error:
zh_CN