0


永中文档在线转换预览双活实现方案

永中文档在线转换预览双活实现方案

永中文档在线转换预览服务 是永中软件股份有限公司基于十多年核心技术积累、面向移动互联领域推出的 一款文档处理软件。永中采用自主可控核心技术,具备快速技术和服务响应能力,把文档原样输出为 HTML,图片等,即点即得、无需下载、保护文档隐私,快速高效,轻松实现文档在线安全阅读。​

实现目标

  • 通过nginx实现业务fcsserver负载均衡,后端可以动态扩展应用服务器
  • nginx通过keepalived实现高可用,解决单点故障
  • 通过keepalived实现nginx双活配置,解决nginx主备资源使用率50%问题
  • 通过dns轮询解析域名到双活vip,达到负载均衡效果
  • 后期nginx达到瓶颈应考虑lvs+keepalived+nginx架构,动态扩展nginx服务器

环境准备

  • 服务器可以连通外网或者有内网yum源服务器,本次实验服务器可连通外网
  • nginx01和nginx02服务器需要在同一网段的网络内
  • 保证各服务器之前网络互通
  • 保证服务器的防火墙和selinux关闭
  • 必须对外提供域名访问,否则只能使用其中一个vip
  • 内网部署DNS服务器,模拟DNS轮询解析

1、网络架构

在这里插入图片描述

2、实验服务器分布

主机ip操作系统软件端口vipnginx01192.168.56.101Centos7.6nginx keepalived80192.168.56.200nginx02192.168.56.106Centos7.6nginx keepalived80192.168.56.201fcs01192.168.56.101Centos7.6tomcat8080fcs02192.168.56.106Centos7.6tomcat8080共享存储192.168.56.108Centos7.6nfs缓存192.168.56.108Centos7.6redis6379内部DNS192.168.56.108Centos7.6bind53

3、redis

部署服务器:

192.168.56.108

3.1 配置redis

/etc/redis.conf

  1. # 监听地址bind0.0.0.0
  2. # 认证密码
  3. requirepass yozosoft

3.2 启动redis

  1. systemctl enable redis --now && systemctl status redis

在这里插入图片描述

4、nfs

4.1 配置nfs

192.168.56.108(服务端)

  1. # 创建存储目录mkdir -p /opt/yozo/data
  2. # 修改权限chown -R nfsnobody.nfsnobody /opt/yozo/data
  3. # 修改配置文件vim /etc/exports
  4. /opt/yozo/data 192.168.56.0/24(rw,sync,all_squash)

192.168.56.101/192.168.56.106(客户端)

  1. # 创建挂载点mkdir -p /opt/yozo/data
  2. # 挂载nfs共享目录mount -t nfs 192.168.56.108:/opt/yozo/data /opt/yozo/data

4.2 启动nfs

  1. systemctl enable rpcbind nfs --now && systemctl status rpcbind nfs

在这里插入图片描述

5、fcsserver

部署服务器:

192.168.56.101(fcsserver01)

192.168.56.106(fcsserver02)

5.1 部署fcs

以tomcat为中间件,本次实验fcs安装目录/opt/yozo/fcsserver/webapps/fcsserver,/opt/yozo/fcsserver为解压后的tomcat

部署项目包

  1. mkdir opt/yozo/fcsserver/webapps/fcsserver -p
  2. unzip fcscloud.war -d opt/yozo/fcsserver/webapps/fcsserver

修改fcsserver配置文件

  1. # /opt/yozo/fcsserver/webapps/fcsserver/WEB-INF/classes/config.propertiesinputDir=/opt/yozo/data/fcsdata/input # 必须指定挂载共享存储目录的outputDir=/opt/yozo/data/fcsdata/output
  2. # 如果不提供域名,就只能配置其中一个vip;如果配置为域名,则缓存后,通过vip和fcsserver的ip将不能访问转换的缓存文件viewDomain=http://www.fcsserver.com/fcsserver/
  1. # /opt/yozo/fcsserver/webapps/fcsserver/WEB-INF/classes/application.yml
  2. cache: #采用哪种缓存数据方式
  3. type: redis #local,redis,mysql(local模式只适用于单机,集群部署不支持)
  4. redis:
  5. enable: true#redis开关(预览设置权限时需要使用redis,并发和异步waitting机制使用redis,必开)
  6. redis:
  7. database: 1# Redis数据库索引(默认为0)
  8. timeout: 10000#设置客户端超时时间,单位是毫秒,默认为2000
  9. password: yozosoft #密码#单机版
  10. host: 192.168.56.108
  11. port: 6379
  1. # /opt/yozo/fcsserver/webapps/fcsserver/WEB-INF/classes/<property name="LOG_HOME">../logs</property>

5.2 配置fcs系统服务

配置fcsserver.service

  1. # cat /usr/lib/systemd/system/fcsserver.service[Unit]Description=fcsserver Service.
  2. After=network.target
  3. [Service]Type=forking
  4. Environment="PATH=/opt/yozo/jdk-8u251-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"WorkingDirectory=/opt/yozo/fcsserver/bin
  5. ExecStart=/opt/yozo/fcsserver/bin/startup.sh
  6. Restart=always
  7. PrivateTmp=true
  8. # 可以指定相关用户启动fcsserver# User=yozo# Group=yozoLimitNOFILE=65536[Install]WantedBy=multi-user.target

如果以普通用户启动,需要将tomcat目录属主属组设置成相应账户

  1. # 此次实验以yozo用户启动chown -R yozo. /opt/yozo/fcsserver

5.3 启动fcs

  1. systemctl enable fcsserver --now && systemctl status fcsserver

在这里插入图片描述

6、nginx

部署服务器:

192.168.56.101(nginx01)

192.168.56.106(nginx02)

6.1 配置nginx

/etc/nginx/conf.d/fcsserver.conf配置

  1. server {....
  2. location ~ /fcsserver {
  3. add_header Cache-Control private,no-store,max-age=0,no-cache,must-revalidate,post-check=0,pre-check=0;
  4. proxy_redirect off;
  5. proxy_set_header Host $http_host;
  6. proxy_set_header X-Real-IP $remote_addr;
  7. proxy_set_header X-Forwarded_Proto "http";
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. proxy_request_buffering off;
  10. proxy_read_timeout 7200;
  11. proxy_send_timeout 7200;
  12. proxy_pass http://fcsserver;}....}
  13. upstream fcsserver {
  14. server 192.168.56.101:8080 fail_timeout=60s;
  15. server 192.168.56.106:8080 fail_timeout=60s;
  16. keepalive 256;}

6.2 启动nginx

  1. systemctl enable nginx --now && systemctl status nginx

在这里插入图片描述

7、keepalived

部署服务器:

192.168.56.101(nginx01)

192.168.56.106(nginx02)

7.1 配置keepalived

7.1.1 nginx01配置

/etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3. router_id proxy1
  4. }
  5. vrrp_script chk_nginx {
  6. script "/etc/keepalived/check_nginx.sh"
  7. interval 2
  8. weight 20
  9. fall 3
  10. rise 2}
  11. vrrp_instance VI_1 {
  12. state MASTER
  13. interface enp0s3
  14. virtual_router_id 51
  15. priority 100
  16. advert_int 1
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111}
  20. virtual_ipaddress {192.168.56.200
  21. }
  22. track_script {
  23. chk_nginx
  24. }}
  25. vrrp_instance VI_2 {
  26. state BACKUP
  27. interface enp0s3
  28. virtual_router_id 52
  29. priority 90
  30. advert_int 1
  31. authentication {
  32. auth_type PASS
  33. auth_pass 1111}
  34. virtual_ipaddress {192.168.56.201
  35. }
  36. track_script {
  37. chk_nginx
  38. }}

7.1.2 nginx02配置

  1. # 备份keepalived.confmv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.confbak

/etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3. router_id proxy2
  4. }
  5. vrrp_script chk_nginx {
  6. script "/etc/keepalived/check_nginx.sh"
  7. interval 2
  8. weight 20
  9. fall 3
  10. rise 2}
  11. vrrp_instance VI_1 {
  12. state BACKUP
  13. interface enp0s8
  14. virtual_router_id 51
  15. priority 90
  16. advert_int 1
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111}
  20. virtual_ipaddress {192.168.56.200
  21. }
  22. track_script {
  23. chk_nginx
  24. }}
  25. vrrp_instance VI_2 {
  26. state MASTER
  27. interface enp0s8
  28. virtual_router_id 52
  29. priority 100
  30. advert_int 1
  31. authentication {
  32. auth_type PASS
  33. auth_pass 1111}
  34. virtual_ipaddress {192.168.56.201
  35. }
  36. track_script {
  37. chk_nginx
  38. }}

双机/etc/keepalived/check_nginx.sh

  1. #!/bin/bash#时间变量,用于记录日志d=`date --date today +%Y%m%d_%H:%M:%S`#计算nginx进程数量n=`ps -C nginx --no-heading|wc -l`#如果进程为0,则启动nginx,并且再次检测nginx进程数量,#如果还为0,说明nginx无法启动,此时需要关闭keepalivedif[$n -eq "0"];then
  2. /etc/init.d/nginx start
  3. n2=`ps -C nginx --no-heading|wc -l`if[$n2 -eq "0"];thenecho"$d nginx down,keepalived will stop">> /var/log/check_ng.log
  4. systemctl stop keepalived
  5. fifi

7.2 启动keepalived

  1. systemctl enable keepalived --now && systemctl status keepalived

在这里插入图片描述
nginx01

在这里插入图片描述
nginx02

在这里插入图片描述

7.3 模拟故障

7.3.1 nginx01手动关闭nginx

nginx故障后,keepalived会自动启动nginx

在这里插入图片描述

7.3.2 nginx01手动关闭keepalived

nginx01的vip将会绑定到nginx02上面,nginx02将会出现2个vip,2个vip均可以访问fcsserver

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、DNS服务器部署

用于模拟公网DNS轮询解析,实际使用中是在域名提供商处配置指向映射外网ip

8.1 配置dns

/etc/named.conf

  1. zone "fcsserver.com" IN {type master;file"fcsserver.com.zone";};
  2. zone "56.168.192.in-addr.arpa" IN {type master;file"192.168.56.zone";};

/var/named/fcsserver.com.zone

  1. $TTL86400
  2. @ IN SOA tom jerry (; tom & jerry 这两个参数本应是主机名和邮件地址,这里随便填写,没有问题
  3. 42; serial (d. adams)
  4. 3H ; refresh
  5. 15M ; retry
  6. 1W ; expiry
  7. 1D ); minimum
  8. IN NS ns.fcsserver.com. ; notice : don't forget the dot in the end
  9. IN MX 10 mail.fcsserver.com.
  10. www IN A 192.168.56.200
  11. www IN A 192.168.56.201
  12. ns IN A 192.168.56.108
  13. mail IN A 192.168.56.108

/var/named/192.168.56.zone

  1. $TTL86400
  2. @ IN SOA ns.fcsserver.com. root (1997022700; Serial
  3. 28800; Refresh
  4. 14400; Retry
  5. 3600000; Expire
  6. 86400); Minimum
  7. IN NS ns.fcsserver.com.
  8. 200 IN PTR www.fcsserver.com.
  9. 201 IN PTR www.fcsserver.com.
  10. 108 IN PTR mail.fcsserver.com.
  11. 108 IN PTR ns.fcsserver.com.

修改权限

  1. chown named. /var/named/ -R

8.2 启动dns服务

  1. systemctl enable named --now && systemctl status named

在这里插入图片描述

9、验证

目标:本次实验有2个vip 192.168.56.200 和 192.168.56.201,需要验证www.fcsserver.com分别解析到2个vip上,并确认每个vip后端服务正常可用

9.1 客户端dns配置

测试期间,禁用其他网卡,只留虚拟机网卡

在这里插入图片描述

添加DNS

在这里插入图片描述
在这里插入图片描述

9.2 DNS缓存清理

在这里插入图片描述
在这里插入图片描述

9.3 域名访问测试

测试之前需要确认此次DNS解析是否指向所需测试的VIP,如果不是请刷新DNS缓存

需要测试www.fcsserver.com --> 192.168.56.200和www.fcsserver.com --> 192.168.56.201

文件转换测试
在这里插入图片描述
转换文件访问测试
在这里插入图片描述

注:fcsserver的配置文件中viewDomain配置为域名,故转换文件预览连接只能通过www.fcsserver.com可以正常访问,通过vip、nginx ip、fcsserver ip均不可以访问

标签: nginx 服务器 运维

本文转载自: https://blog.csdn.net/yozodcs/article/details/122414129
版权归原作者 yozodcs 所有, 如有侵权,请联系我们删除。

“永中文档在线转换预览双活实现方案”的评论:

还没有评论