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配置共享文件夹,本文使用samba为例做介绍

5.1 samba配置共享文件夹

   yum install samba

配置文件为/etc/samba/smb.conf,修改过程如下:

1.在“Standalone Server Options”区域查找“security = user”处,修改为“security = share”;

2.在“Share Definitions”区域添加如下配置:

   [share] 
   comment = Share Directories 
   path = /home/share 
   browseable =yes 
   public = yes 
   writable = yes 
   directory mask = 0777 
   force directory mode = 0777 
   directory security mask = 0777 
   force directory security mode = 0777 
   create mask = 0777 
   force create mode = 0777 
   security mask = 0777 
   force security mode = 0777

其中path为共享存储目录,可以根据实际进行修改。

path必须具有最高权限。

3.启动smb服务器:

  /etc/rc.d/init.d/smb start

通过如下指令挂载共享目录:

  mount –t cifs //【samba服务器IP或主机名】/【共享目录名称】【挂载点位置】-o username=【用户名】%【密码】

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 ""