如何配置Ubuntu Oracle的负载均衡
导读:Ubuntu 上 Oracle 负载均衡配置指南 一、方案总览与选择 Oracle RAC 内置负载均衡:包含客户端负载均衡与服务器端负载均衡,适合多实例集群,连接分发由监听器和数据库服务协同完成,支持与TAF 故障转移联动。 TCP/应...
Ubuntu 上 Oracle 负载均衡配置指南
一、方案总览与选择
- Oracle RAC 内置负载均衡:包含客户端负载均衡与服务器端负载均衡,适合多实例集群,连接分发由监听器和数据库服务协同完成,支持与TAF 故障转移联动。
- TCP/应用层代理:在 Ubuntu 上使用 HAProxy 或 Nginx 做 4 层/7 层转发,将连接到 Oracle Net 1521 的会话分发到多个数据库节点,适合非 RAC 或需要统一入口、审计与熔断的场景。
- 高可用增强:在代理层前叠加 Keepalived VIP,实现负载均衡器故障时的自动切换,提升整体可用性。
二、RAC 内置负载均衡配置步骤
- 客户端负载均衡
- 在客户端 tnsnames.ora 使用服务名,配置多个节点的 VIP 地址,启用 LOAD_BALANCE=YES,示例:
MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mydb) ) ) - 客户端将按地址列表随机挑选节点建立新连接,实现连接级负载均衡。
- 在客户端 tnsnames.ora 使用服务名,配置多个节点的 VIP 地址,启用 LOAD_BALANCE=YES,示例:
- 服务器端负载均衡
- 配置 SCAN 或地址列表到参数 remote_listener,使监听器间可交换负载信息:
ALTER SYSTEM SET remote_listener='LISTENERS_MYDB' SCOPE=BOTH SID='*'; - 监听器通过 PMON 收集的负载/连接信息,将新连接分配给负载更低的实例(无需在客户端指定实例名)。
- 配置 SCAN 或地址列表到参数 remote_listener,使监听器间可交换负载信息:
- 故障转移 TAF(可选)
- 通过 dbca 或 srvctl 创建数据库服务,设置首选/可用实例与 TAF 策略(TYPE=SELECT, METHOD=BASIC),客户端在连接中断时可自动切换:
SALES = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5) ) ) ) - 验证:lsnrctl status 应看到服务被多个实例注册;多次连接应相对均衡分布到各实例。
- 通过 dbca 或 srvctl 创建数据库服务,设置首选/可用实例与 TAF 策略(TYPE=SELECT, METHOD=BASIC),客户端在连接中断时可自动切换:
三、在 Ubuntu 上使用 HAProxy 或 Nginx 进行连接负载均衡
- 适用场景:单实例/主备、应用不便直连 RAC、需要统一入口、限流/熔断/观测等。
- HAProxy 示例(4 层 TCP,推荐用于 Oracle Net)
- 安装:sudo apt update & & sudo apt install haproxy
- 配置 /etc/haproxy/haproxy.cfg(关键片段):
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy user haproxy group haproxy daemon defaults log global mode tcp option tcplog timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend oracle_front bind *:1521 default_backend oracle_back backend oracle_back balance leastconn server db1 192.168.1.101:1521 check server db2 192.168.1.102:1521 check - 启用:sudo systemctl enable --now haproxy
- Nginx 示例(仅当应用走 HTTP/ORDS/SOAP 等 7 层协议时)
- 安装:sudo apt update & & sudo apt install nginx
- 配置 /etc/nginx/sites-available/oracle:
upstream oracle_backend { least_conn; server 192.168.1.101:1521; server 192.168.1.102:1521; } server { listen 80; location / { proxy_pass http://oracle_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_set_header X-Forwarded-Proto $scheme; } } - 启用:sudo ln -s /etc/nginx/sites-available/oracle /etc/nginx/sites-enabled & & sudo systemctl reload nginx
- 安全与网络
- 仅开放必要端口(如 1521),使用 UFW/安全组 限制来源;为代理与数据库间启用 TLS/SSL(如 Oracle Advanced Security)以加密传输。
四、高可用与验证
- 高可用增强(可选)
- 在两台 Ubuntu 代理节点部署 Keepalived,配置 VRRP 虚拟 IP(VIP),主备自动切换;Nginx/HAProxy 配置保持一致,实现“VIP + 双活/主备”的负载均衡器层高可用。
- 验证要点
- RAC:多次连接应相对均衡命中不同实例;lsnrctl status 显示服务多实例注册;TAF 场景下断开可自动恢复会话。
- 代理:对 VIP:1521 发起连接,检查后端实例接受情况;观察 HAProxy/Nginx 日志与监控指标(连接数、错误、延迟)。
五、关键注意事项
- 使用 VIP 而非物理 IP 进行客户端/RAC 配置,缩短故障切换时间并提高可用性。
- 区分 连接负载均衡 与 运行时负载均衡:前者在连接建立时分发,后者依赖实例/服务统计信息做更细粒度调度。
- 对数据库协议使用 TCP 模式(HAProxy)更稳妥;HTTP/ORDS 等才考虑 Nginx 7 层。
- 始终启用 防火墙/安全组、加密传输 与 监控告警,并在变更前做好 备份与回滚 方案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Ubuntu Oracle的负载均衡
本文地址: https://pptw.com/jishu/777986.html
