3 集群部署

集群部署在单点部署基础上进行。

1 部署架构

本文采用Nginx+tomcat+MySQL作为Report产品集群部署的最佳实践方案。其中,Tomcat作为常用的Web应用服务器,MySQL作为产品的支撑数据库,在这里不做赘述。

2 集群环境准备

2.1 系统要求

操作系统 已验证版本
Linux CentOS 6.X、CentOS 7.X
Windows Windows 10

2.2 硬件配置要求

​ 集群部署方案可以采用多个节点(>=2),本文以三节点为例,说明硬件配置要求。

2.2.1 服务器数量

​ 对于部署三节点的集群,推荐准备三台服务器,如下表所示:

服务器类型 组件类型
应用服务器1 Web容器(Tomcat)
应用服务器2 Web容器(Tomcat)
组件服务器 反向代理和负载均衡(Nginx)、数据库(MySQL)

2.2.2 内存配置

服务器 系统内存
应用服务器 建议16G以上
组件服务器 建议8G以上

2.2.3 磁盘空间

服务器 目录 配置 说明
应用服务器1 /usr/local 保证至少有40G空余可用空间 安装Web应用,保存日志
应用服务器2 /usr/local 保证至少有40G空余可用空间 安装Web应用,保存日志
组件服务器 /usr/local 保证至少有100G空余可用空间 安装Nginx组件,安装MySQL数据库以及保存静态文件

2.2.4 端口准备

作用 组件 端口 备注
负载均衡 Nginx 80 整个集群的入口端口,可修改nginx.conf自定义端口
Web容器 Tomcat 8080 每个Web应用的服务端口,可修改server.xml自定义端口
数据库服务 MySQL 3306 数据库服务的端口,可修改my.ini自定义端口

3 集群部署

3.1 Linux系统集群部署

搭建Nginx服务需要安装相关依赖,所以要求服务器必须可以联网。搭建服务之间需要关闭防火墙或者开放对应的端口,命令如下:

systemctl stop firewalld #关闭防火墙
firewall-cmd --zone=public --add-port=服务端口号/tcp --permanent #开放某端口

3.1.1 搭建Nginx服务

​ 以CentOS 7.5为例,搭建单节点Nginx服务的步骤如下:

  1. 下载Nginx

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    
  2. 安装相关依赖

    yum install gcc
    yum install pcre-devel
    yum install zlib zlib-devel
    yum install openssl openssl-devel
    
  3. 下载Linux版本的Nginx并解压

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    
    tar -zxvf nginx-1.18.0.tar.gz
    
  4. 切换到nginx-1.18.0目录并执行如下命令

    ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --http-client-body-temp-path=/var/tmp/client \
    --http-proxy-temp-path=/var/tmp/proxy \
    --http-fastcgi-temp-path=/var/tmp/fastcgi \
    --http-uwsgi-temp-path=/var/tmp/uwsgi \
    --http-scgi-temp-path=/var/tmp/scgi \
    --with-http_ssl_module \
    --with-http_gzip_static_module
    
  5. 编译并安装,默认安装到/usr/local/nginx

    make && make install
    
  6. 启动Nginx

    /usr/local/nginx/sbin/nginx
    
  7. 浏览器访问该服务器IP地址或IP地址:80,结果如下图所示表示启动成功

    000

4 Web集群运维

虽然使用命令行可以对Nginx进行各种操作,比如启动等,但是不太方便,下面介绍在 Linux 下如何设置其开机自启动。

4.1 Nginx开机自启动脚本

以CentOS7.X为例配置Nginx开机自启动脚本步骤如下:

  1. 在/lib/systemd/system/目录下创建 nginx.service文件:

    vim /lib/systemd/system/nginx.service
    
  2. 在脚本中添加如下内容:

    [Unit]
    Description=nginx service
    After=network.target
    [Service]
    Type=forking
    ExecStart=/usr/nginx/sbin/nginx
    ExecReload=/usr/nginx/sbin/nginx -s reload
    ExecStop=/usr/nginx/sbin/nginx -s quit
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    
  3. 保存脚本文件后设置文件的执行权限:

    chmod a+x /lib/systemd/system/nginx.service
    
  4. 配置完脚本以后,就可以使用以下命令设置开机自启动等操作了:

    systemctl enable nginx.service          #设置开机自启动
    systemctl disable nginx.service         #停止开机自启动
    systemctl start nginx.service          #启动 Nginx 服务
    systemctl stop nginx.service           #停止服务
    systemctl status nginx.service          #查看服务当前状态
    systemctl list-units --type=service     #查看所有已启动的服务
    

5 集群环境配置共享文件夹

UniEAP Report产品使用过程中会将报表实例对象缓存到磁盘,用于翻页、导出等操作,所以集群环境中可配置一个共享文件夹,用于放置缓存对象。

可以使用nfs或者samba配置共享文件夹,本文使用nfs为例做介绍

1.安装 NFS 服务器和客户端

# 安装 NFS 服务器
sudo yum install nfs-utils

# 安装 NFS 客户端(如果需要挂载共享目录)
sudo yum install nfs-utils

2.配置 NFS 共享目录

#创建共享目录
sudo mkdir -p /mnt/nfs_share

#设置目录权限,确保其他主机可以访问该目录
sudo chmod 777 /mnt/nfs_share

#指定哪些客户端可以访问该目录
sudo vi /etc/exports

#添加以下行,以允许 192.168.1.0/24 网络中的所有主机读写该目录
/mnt/share 192.168.1.0/24(rw,sync,no_subtree_check)

#rw:表示可读写。
#sync:表示同步写操作,保证数据一致性。
#no_subtree_check:禁用子目录检查,这通常能提高性能。

#重新导出共享目录
sudo exportfs -a

#启动并启用nfs
sudo systemctl start nfs-server
sudo systemctl enable nfs-server

#如果开启防火墙请添加防火墙规则
# CentOS 7/8 使用 firewalld
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

3.客户端挂载共享目录

#确保客户端机器安装nfs客户端
sudo yum install nfs-utils

# 创建挂载点
sudo mkdir -p /mnt/nfs_mount

# 挂载 NFS 共享目录
sudo mount -t nfs 192.168.1.100:/mnt/nfs_share /mnt/nfs_mount

4.测试

ls /mnt/nfs_mount 能否看到共享目录中的文件

6 Web集群下Report配置

Web集群下Report配置主要涉及到对共享文件夹的配置,任务调度配置。

6.1 共享文件夹设置

在report/WEB-INF/conf/unieap/report/report-engine-config.properties文件中,修改如下配置。

  report_temp_file_path=<</home/share/temp/

6.2 将文件拷贝到共享文件夹中

将报表内置的模板与图片拷贝到共享文件夹中。

mv report/unieap/pages/report/temp/image   /home/share/temp/
mv report/unieap/pages/report/temp/templates   /home/share/temp/

6.3 配置任务调度模块

在report/WEB-INF/conf/unieap/newscheduler/dataviz-schedular.properties中修改如下配置。

  org.quartz.jobStore.isClustered = true

这样可以避免同一个任务被执行多次。

6.4 Nginx相关配置

本文给出三节点的负载均衡配置,即一个节点配置Nginx服务用于负载均衡,另外两个节点配置Tomcat服务。示例节点的配置信息如下:

服务器IP 作用 端口号
10.4.53.105 Nginx负载均衡 80
10.4.53.89 Tomcat应用服务 8081
10.4.53.128 Tomcat应用服务 8081

精简后的nginx.conf配置如下:

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream report-service {
        server 10.4.53.128:8081;
        server 10.4.53.89:8081;
        ip_hash;
    }

    server {
        listen       80;
        server_name  10.4.53.105;
        location / {
                proxy_pass http://report-service;
        }
    }
}

server表示一个Web服务,监听着80端口,用于接收用户请求,当用户输入 http://10.4.53.105/report 时,请求会被转发给Tomcat节点,其中 http://report-service 是自定义的域名,report-service和upstream中的report-service名称必须相同,这样才能把请求转发给128或89节点。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""