文件修改控制
修改日期 | 版本 | 修改内容 | 修改人 |
---|---|---|---|
2015-10-06 | v1.0 | 建立 | 夏凯祥 |
2016-06-22 | v1.1 | 增加服务器环境配置要求等内容 | 汤成 |
2016-10-28 | v1.2 | 增加服务器 ulimit 配置要求 | 汤成 |
系统拓扑图
数据库
数据库包括一卡通核心交易数据库(Oracle 11g)和缓存服务数据库(Redis)。交易数据库安装配置有专门DBA负责;缓存数据库由实施工程师负责安装配置,缓存服务器要求 4核CPU,16G 以上内存,500G 硬盘,一块千兆网卡。
Redis 缓存服务安装采用 yum 从软件中心安装。
应用服务器
应用服务器提供一卡通服务门户、一卡通管理平台业务功能。一般需要部署两台服务器作为应用集群。服务器要求 4核CPU,8G 内存,200G硬盘,一块千兆网卡。操作系统为 CentOS 7
或 OracleLinux 7
64 位。
API 服务器
API 服务器提供一卡通平台业务服务API,提供给包括设备前置、第三方应用前置、支付宝微信等充值服务前置接入的 API 服务。至少部署两台服务器作为应用集群,现场需要根据实际负载情况考虑增加 API 服务器数量。服务器要求 4核CPU,8G 内存,200G硬盘,一块千兆网卡。操作系统为 CentOS 7
或 OracleLinux 7
64 位。
nginx 代理服务器
nginx 代理服务器提供了对应用服务、API服务的反向代理服务。从安全性的要求,需要提供一卡通外网访问地址,并且服务器需要启用 HTTPS 安全访问方式。推荐使用学校申请的 HTTPS 安全证书,如果环境不具备可以选择自行颁发不受信证书。
服务器要求 2核CPU,4G 内存,200G硬盘,两块千兆网卡。操作系统为 CentOS 7
或 OracleLinux 7
64 位。nginx 服务使用 yum 从软件中心安装。
nginx 服务必须提供容错和负载功能,有两种部署方案:
前置服务 前置服务包括消费前置、门禁前置、微信支付宝充值服务前置、圈存前置等等。前置服务需要根据现场使用情况进行配置,无特殊要求下,前置服务器配置:2核CPU,4G 内存,200G硬盘,一块千兆网卡,操作系统为 CentOS 7
或 OracleLinux 7
64 位。
消费前置
- 消费前置可以部署两台实现容错。消费网关可以配置连接两台消费前置,网关会自动判断请求正常的消费前置。
所有的服务器必须按照下面要求进行配置。
字符集
要求所有服务器必须采用 UTF-8 字符集。
SELinux
服务器需要关闭 SELinux 。修改 /etc/selinux/config 文件, 将SELINUX=enforcing改为SELINUX=disabled,然后重启服务器。 注意:需要仔细检查是否拼写正确,否则服务器将无法启动。
系统参数 ulimit
需要调整服务器 ulimit 限制参数, 可以修改 /etc/security/limits.conf 增加以下几行:
* soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072
修改完成后需要重新登录服务器,然后通过 ulimit -a 命令检查配置,正确的配置如下, 只要注意检查 open files 和 max user processes 参数值即可。
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 62620 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65536 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 131072 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
redis 服务可以通过 yum 快捷安装:
$ yum install -y redis $ systemctl enable redis.service $ vi /etc/redis.conf # 修改 redis 配置 $ systemctl start redis.service $ systemctl status redis.service # 检查服务状态 ● redis.service - SYSV: Starts and stops the redis daemon. Loaded: loaded (/etc/rc.d/init.d/redis) Active: active (running) since 三 2016-06-22 14:31:02 CST; 15s ago Docs: man:systemd-sysv-generator(8) Process: 31203 ExecStop=/etc/rc.d/init.d/redis stop (code=exited, status=0/SUCCESS) Process: 31205 ExecStart=/etc/rc.d/init.d/redis start (code=exited, status=0/SUCCESS) CGroup: /system.slice/redis.service ├─30562 /usr/bin/redis-server 127.0.0.1:6379 └─31059 /usr/bin/redis-server 172.28.201.101:6379 $ redis-cli ping # 验证服务是否正常,正常情况下会响应 PONG PONG
redis 配置内容如下:
bind: host_ip # host_ip 是服务器一卡通专网 IP maxmemory: 4G # 最大内存 4G
应用服务/API服务(以下简称服务)都是采用 Java 平台部署,需要先安装 JDK 7
环境和 Tomcat 7
应用服务器。安装过程请使用 root 用户进行操作。
JDK 7 可以通过 Oracle 官方网站下载,安装过程如下:
$ tar xvfz jdk-7u79-linux-x64.tar.gz -C /usr/local $ mv /usr/local/jdk1.7.0_79 /usr/local/jdk7
打开配置文件:vim ~/.bash_profile ,在尾部添加下面内容,然后重新登录
export JAVA_HOME=/usr/java/jdk7 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export JAVA_ENV=-Dfile.encoding=UTF-8
为了简化配置,我们提供了标准配置好的 Tomcat 包,请通这里下载。下载后安装步骤如下:
$ tar xvfz apache-tomcat7-config.tar.gz -C /opt/tomcat
Tomcat 数据库连接配置需要通过加密配置,加密串可以通过密码管理服务或者请技术支持提供加密串。当获取加密配合后修改 conf/context.xml 文件。
启动、停止 Tomcat 服务方式如下:
$ cd /opt/tomcat/bin $ ./startup.sh # 启动服务 $ ./shutdown.sh # 停止服务
nginx 代理服务安装步骤如下:
$ yum install -y nginx $ systemctl enable nginx.service $ vi /etc/nginx/nginx.conf $ systemctl start nginx.service $ systemctl status nginx.service ● nginx.service - Nginx Web Server Loaded: loaded (/etc/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since 一 2016-05-02 23:19:37 CST; 1 months 20 days ago Docs: http://nginx.org Main PID: 2607 (nginx) CGroup: /system.slice/nginx.service ├─2607 nginx: master process /usr/local/sbin/nginx └─2610 nginx: worker process
nginx.conf 配置模板如下,需要根据现场情况自行修改配置:
#user nobody; worker_processes auto; events { use epoll; worker_connections 1024; multi_accept on; } http { include mime.types; default_type application/octet-stream; proxy_headers_hash_max_size 51200; proxy_headers_hash_bucket_size 6400; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $request_time "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; gzip on; upstream epay_balance { # 每个server表示一个服务地址 ip_hash; server app1:8080; server app2:8080; keepalive 20; } upstream epayapi_balance { # 每个server表示一个服务地址 server api1:8080 fail_timeout=30s; server api2:8080 fail_timeout=30s; keepalive 20; } # HTTPS server server { listen 8443 ssl; # 如果用户提供域名,请使用域名访问 server_name localhost; ssl_certificate /etc/nginx/conf/server.crt; ssl_certificate_key /etc/nginx/conf/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location = / { rewrite ^ /epay/ permanent; } rewrite ^/epayapi/services/api/(.*)$ /epay/api/$1 break; location /epay { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $http_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://epay_balance; proxy_next_upstream; proxy_redirect http:// https://; proxy_connect_timeout 25s; } location /epayapi { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $http_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://epayapi_balance; proxy_next_upstream; proxy_redirect http:// https://; proxy_connect_timeout 25s; } } match server_ok { status 200; } }
按照文件名顺序执行数据库初始化脚本
在服务器上安装好tomcat,上传epayapi的发布包,并解压生成epayapi文件夹。
正常启动后,打开浏览器输入http://ip:port/epayapi/services/common/getsystemversion
(ip为部署服务器的ip,端口port为默认8080的端口)会返回主机名+"-version"字样。
epay的发布和epayapi差不多。首先上传epay的发布包到tomcat/webapps并解压。生成epay文件目录。 同样根据实际情况修改tomcatepay/conf下的 context.xml 文件配置。