《企业所得税汇算清缴政策风险预警服务系统安装部署手册V12.docx》由会员分享,可在线阅读,更多相关《企业所得税汇算清缴政策风险预警服务系统安装部署手册V12.docx(49页珍藏版)》请在三一办公上搜索。
1、企业所得税汇算清缴政策风险预警服务系统安装部署说明税友软件集团股份有限公司2017年3月8日修订页编号章节名称修订内容简述修订日期修订前版本号修订后版本号修订人批准人1全部全文建立2017.2.24沈佳2全部修改部分参数2017.3.7沈佳1. 系统安装准备1.1. 系统流程图【流程说明】1、 数据抽取从金三核心征管数据库抽取相关数据到标准仓库中;2、 预处理预处理服务从标准数据仓库加载财务报表信息、优惠备案信息、基础信息、纳税人信息到Redis历史数据集中;3、 分析处理分析服务接收网报处理端提交的的汇算清缴申报数据,结合Redis历史数据集缓存以及本地数据库的指标规则对纳税人申报数据进行合
2、规、合理性检测,并将检测结果暂存Redis结果集缓存中(或本地文件),最终写入本地数据库;4、 成效统计税务局端决策2包风险管理中增加成效统计菜单从数据库中查询纳税人风险预警检测结果在页面上进行展现和统计;1.2. 部署结构图【说明】企业所得税汇算清缴政策风险预警服务系统统一部署在各税局的业务处理域,为了实现高可用性,将分析服务分别部署在三台应用服务器上并通过Weblogic集群方式部署。预处理服务部署在其中1台应用服务器上并通过单节点部署即可。历史集和结果集两组Redis缓存服务分别部署在三台缓存服务器上通过Redis哨兵模式部署。1.3. 软件环境及安装文件清单序号软件资源版本要求安装文件
3、1操作系统Oracle Linux6.3以上(64位)局方提供并负责安装2数据库Oracle11.2.0.4(64位) 字符集:AMERICAN_AMERICA.AL32UTF8p13390677_112040_Linux-x86-64_1of2.zipp13390677_112040_Linux-x86-64_2of2.zipgrid_11.2.0.4.zip3中间件WeblogicWeblogic 11g(10.3.6.0.3) 64bitwls1036_generic.jar4JdkJDK1.7.0_76 64bitjdk-7u67-linux-x64.tar.gz5缓存服务Redis3
4、.2.3redis-3.2.3.tar.gz6负载均衡服务Tengine2.1.2tengine-2.1.2.tar.gzopenssl-1.0.1g.tar.gz2. 操作系统性能优化配置2.1. 修改用户最大进程和同时打开文件个数以root用户登录,修改如下配置文件:(1)修改配置文件/etc/profile,在尾部追加以下片断, 追加完成后通过命令source /etc/profile让参数即时生效;ulimit -SHn 65535ulimit -SHu 65535(2)修改配置文件/etc/security/limits.conf,在文件尾部追加如下片断:* soft nproc 6
5、5535* hard nproc 65535* soft nofile 65535* hard nofile 65535(3)修改配置文件/etc/security/limits.d/90-nproc.conf,将第1行的1024改为65535* soft nproc 1024 #将1024改为65535root soft nproc unlimited2.2. 修改端口最大的监听队列的长度以root用户登录,修改如下配置文件:vi /etc/rc.localecho 511 /proc/sys/net/core/somaxconnecho never /sys/kernel/mm/trans
6、parent_hugepage/enabled下次重启后生效2.3. 修改内核针对内存分配的策略以root用户登录,修改如下配置文件:vi /etc/sysctl.confvm.overcommit_memory=0kernel.shmmax =xx bytes #(应用服务器:物理内存*0.5,数据库服务器:物理内存*0.7)sysctl -p3. Redis安装与配置Redis提供了sentinel(哨兵)机制,通过sentinel模式启动redis后,自动监控master/slave的运行状态,自动进行故障转移切换。基本原理是:心跳机制+投票裁决。每个sentinel会向其它sentin
7、al、master、slave定时发送消息,以确认对方是否“活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的“主观认为宕机” Subjective Down,简称SDOWN)。若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master彻底死亡(即:客观上的真正down机,Objective Down,简称ODOWN),通过一定的选举vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。3.1. 部署规划3.1.1安装目录规划软件名称版本安装路径属主tcltcl8.5.18-src.tar.gz/re
8、disredisredisredis-3.2.3.tar.gz/redisredis目录结构规划目录地址程序安装目录/redis/redis-3.2.3/src配置文件目录/redis/config/实例名临时文件目录/redis/redistmp/实例名pidfile文件目录/redis/pidfile/实例名数据文件目录/redis/dbfile/实例名日志文件目录/redis/log/实例名启动文件目录/redis/sh/实例名3.1.2地址端口规划实例名服务类型MasterSlave1Slave2内存historyRedis服务 IP3:6380IP2:6380IP1:6380物理内存
9、的50%Sentinel服务IP3:26380 IP2:26380IP1:263803.2. 安装tcl组件1、将/usr/local目录访问权限赋予redis用户;2、以redis用户上传tcl8.5.18-src.tar.gz文件至/redis目录,并解压安装此目录下;redisredis redis$ tar -zxvf tcl8.5.18-src.tar.gz redisredis redis$ cd tcl8.5.18/unix/redisredis unix$ ./configure;make;make test;make install3.3. 安装Redis以redis用户上传
10、redis-3.2.3.tar.gz文件至/redis目录,并解压安装此目录下redisredis redis$ tar -zxvf redis-3.2.3.tar.gz redisredis redis$ cd redis-3.2.3redisredis redis$ makeredisredis redis$ make testo/ All tests passed without errors!Cleanup: may take some time. OKmake1: Leaving directory /redis/redis-3.2.3/src redisredis redis$ m
11、ake install安装过程中如果出现如下报错:* err: Test replication partial resync: ok psync (diskless: yes, reconnect: 1) in tests/integration/replication-psync.tclExpected condition s -1 sync_partial_ok 0 to be true (s -1 sync_partial_ok 0)Cleanup: may take some time. OKmake1: * test Error 1make1: Leaving directory
12、/opt/software/redis-3.2.3/srcmake: * test Error 2解决方法:将超时时间延长,改完后重新再编译测试weblogicredis redis-3.2.3$ vi tests/integration/replication-psync.tcl test Test replication partial resync: $descr (diskless: $diskless, reconnect: $reconnect) # Now while the clients are writing data, break the maste-slave # li
13、nk multiple times. if ($reconnect) for set j 0 $j $duration*10 incr j after 500 #将100改为500 # catch puts MASTER $master dbsize keys, SLAVE $slave dbsize keys if ($j % 20) = 0 catch if $delay $slave multi $slave client kill $master_host:$master_port $slave debug sleep $delay $slave exec else $slave cl
14、ient kill $master_host:$master_port 3.4. 修改配置文件3.4.1修改Redis主节点(Master)配置文件找到安装模板中的master目录下的redis.conf配置文件,并修改以下红色部分内容port 端口号 # history实例配置为6380pidfile /redis/pidfile/实例名/redis.pid #修改pidfile保存路径logfile /redis/log/实例名/redis.log #修改redis日志保存路径dir /redis/dbfile/实例名 #修改dbfile保存路径masterauth servyou #从服
15、务器从主服务器同步时的认证密码,设置为servyourequirepass servyou #设置Redis连接密码,设置为servyou。如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码maxmemory xxg #修改内存大小,history实例设置为物理内存的50%3.4.2修改Redis从节点(Slave1/Slave2)配置文件找到安装模板中的slave目录下的redis.conf配置文件,并修改以下红色部分内容port 端口号 # history实例配置为6380pidfile /redis/pidfile/实例名/redis.pid #修改pidfile
16、保存路径logfile /redis/log/实例名/redis.log #修改redis日志保存路径dir /redis/dbfile/实例名 #修改dbfile保存路径masterauth servyou #从服务器从主服务器同步时的认证密码,设置为servyourequirepass servyou #设置Redis连接密码,设置为servyou。如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码maxmemory xxg #修改内存大小, history实例设置为物理内存的50%slaveof 主节点IP 端口号 #从主节点同步3.4.3修改哨兵节点Sentin
17、el配置文件找到安装模板中的sentinel目录下的sentinel.conf配置文件,并修改以下红色部分内容port 哨兵端口号 # history实例配置为26380pidfile /redis/pidfile/实例名/sentinel.pid #修改pidfile保存路径logfile /redis/log/实例名/sentinel.log #修改sentinel日志保存路径dir /redis/redistmp/实例名 #修改临时文件保存路径sentinel monitor 实例名 主节点IP 端口号 2 #监控master节点的地址和端口sentinel failover-timeo
18、ut 实例名 15000#表示如果15秒后,实例仍没活过来,则启动failover,从剩下的slave中选一个升级为mastersentinel down-after-milliseconds 实例名 30000 #表示如果3s内实例没响应,就认为SDOWNsentinel auth-pass 实例名 servyou #设置访问实例的密码,默认为servyousentinel parallel-syncs 实例名 1 #表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好
19、有人在访问这些slave,可能造成读取失败,影响面会更广。最保定的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。sentinel config-epoch 实例名 0sentinel leader-epoch 实例名 03.4.4制作启动脚本1、redis启动文件start_redis.sh#!/bin/shcd /redis/redis-3.2.3/src./redis-server /redis/config/实例名/redis.conf tail -f /redis/log/实例名/redis.log2、查看
20、redis日志脚本view_redis.sh#!/bin/shtail -f /redis/log/实例名/redis.log3、sentinel启动文件start_sentinel.sh#!/bin/shcd /redis/redis-3.2.3/src./redis-sentinel /redis/config/实例名/sentinel.conf tail -f /redis/log/实例名/sentinel.log4、查看sentinel日志脚本view_sentinel.sh#!/bin/shtail -f /redis/log/实例名/sentinel.log将上述启动文件放置对应的
21、/redis/sh/实例名目录下,并赋予执行权限3.5. 备份与恢复3.5.1备份RedisSAVE命令用于创建当前数据库的备份。语法:该命令将在 redis 安装目录中创建dump.rdb文件。具体示例如下:192.168.149.136:6380 SAVE OK另外还提供一种后台备份的方式完成redis的备份,具体操作如下:192.168.149.136:6380 bgsaveBackground saving started3.5.2恢复如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用CONFIG命令,如下
22、所示:192.168.149.136:6380 CONFIG GET dir1) dir2) /redis/dbfile/result3.6. 常用命令1、 连接命令,可以通过此命令连接到redis,便于后面的其他操作格式:redis-cli -h -p -a redisredis $ redis-cli -h 192.168.149.136 -p 6380 -a servyou 192.168.149.136:63802、 置值命令:set 3、 取值命令:get 192.168.149.136:6379 set username abcOK192.168.149.136:6379 get
23、usernameabc4、 删除某个key值 del 5、 删除Redis所有数据flushall(注意慎用)6、 通过哨兵查看当前master节点:sentinel mastersredis-cli -h 192.168.149.136 -p 26380 a servyou sentinel masters7、 查看当前节点信息命令:info Replicationl 如果是主节点,则显示其从节点数量、从节点地址等信息,如下图:192.168.149.136:6380 info Replication# Replicationrole:masterconnected_slaves:2slav
24、e0:ip=192.168.149.136,port=6378,state=online,offset=1062132,lag=1slave1:ip=192.168.149.136,port=6377,state=online,offset=1062132,lag=1master_repl_offset:1062275repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:13700repl_backlog_histlen:1048576l 如果是从节点,则显示其对应的主节点信息,如下图:redi
25、sredis $ redis-cli -h 192.168.149.136 -p 6380 -a servyou 192.168.149.136:6380 info Replication# Replicationrole:slavemaster_host:192.168.149.136master_port:6379master_link_status:upmaster_last_io_seconds_ago:1master_sync_in_progress:0slave_repl_offset:1141743slave_priority:100slave_read_only:1connec
26、ted_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:03.7. 服务启动首次构建sentinel环境时,必须首先启动Master节点(包括:Master和Master-sentinel),再启动各个Slave结点,建议通过事先准备好的启动脚本进行启动3.7.1启动Master3.7.2启动master-sentinel3.8. 实践操作考虑到实践环境机器限制,现需要在1台服务器(192.
27、168.149.136)上同时部署两组Redis集群实例,因此各个节点只能通过端口来区分,现规划如下:3.8.1安装目录规划目录结构规划目录地址程序安装目录/redis/redis-3.2.3/src配置文件目录/redis/config/history临时文件目录/redis/redistmp/historypidfile文件目录/redis/pidfile/history数据文件目录/redis/dbfile/history日志文件目录/redis/log/history启动文件目录/redis/sh/history3.8.2地址端口规划实例名服务类型MasterSlave1Slave2内
28、存historyRedis服务 537753785379512MSentinel服务2537725378253793.8.3准备配置文件实例名服务类型MasterSlave1Slave2historyRedis服务 Sentinel服务3.8.4准备启动脚本实例名服务类型MasterSlave1Slave2historyRedis服务 Sentinel服务3.8.5操作验证(1)根据sentinel查看当前Master节点redisredis $ redis-cli -h 192.168.149.136 -p 26377 sentinel masters1) name 2) result 3)
29、 ip 4) 192.168.149.136 5) port 6) 6377 7) runid 8) e1f3b4f4e42babe33e3abef1221bffacb2ac786b 9) flags 10) master 11) link-pending-commands 12) 0 13) link-refcount 14) 1 15) last-ping-sent 16) 0 17) last-ok-ping-reply 18) 185 19) last-ping-reply 20) 185 21) down-after-milliseconds 22) 30000 23) info-r
30、efresh 24) 9289 25) role-reported 26) master 27) role-reported-time 28) 23187140 29) config-epoch 30) 0 31) num-slaves 32) 2 33) num-other-sentinels 34) 2 35) quorum 36) 2 37) failover-timeout 38) 15000 39) parallel-syncs 40) 1(2)只能向Master节点写值,不允许向slave节点写值redisredis $ redis-cli -h 192.168.149.136 -
31、p 6379 -a servyou set ABC 123(error) READONLY You cant write against a read only slave.OK(3)向Master置值,从Slave读取,验证主从同步效果redisredis $ redis-cli -h 192.168.149.136 -p 6377 -a servyou set ABC 123OKredisredis $ redis-cli -h 192.168.149.136 -p 6377 -a servyou get ABC 123#两个从结点数据都过来了redisredis $ redis-cli
32、-h 192.168.149.136 -p 6378 -a servyou get ABC 123redisredis $ redis-cli -h 192.168.149.136 -p 6379 -a servyou get ABC 123(4)slave结点6379宕机,会对其他结点造成影响吗?后续该节点恢复后,数据还保持同步吗?redisredis $ ps -ef|grep redis-redis 2408 32688 0 23:25 pts/12 00:00:00 grep redis- redis 32477 32476 0 16:48 pts/6 00:00:18 ./redis
33、-server *:6377 redis 32511 32510 0 16:49 pts/7 00:00:25 ./redis-sentinel *:26377 sentinel redis 32550 32549 0 16:49 pts/8 00:00:18 ./redis-server *:6378 redis 32587 32586 0 16:50 pts/9 00:00:24 ./redis-sentinel *:26378 sentinel redis 32624 32623 0 16:50 pts/10 00:00:18 ./redis-server *:6379 redis 32
34、660 32659 0 16:51 pts/11 00:00:24 ./redis-sentinel *:26379 sentinel #杀死其中1个slave 6379节点的进程redisredis $ kill -9 32624#再往6379对应的Master6377主结点写值DEFredisredis $ redis-cli -h 192.168.149.136 -p 6377 -a servyou set DEF 321 OK#查看6378从节点的值redisredis $ redis-cli -h 192.168.149.136 -p 6378 -a servyou get DEF
35、321redisredis $ redis-cli -h 192.168.149.136 -p 6379 -a servyou get DEF Could not connect to Redis at 192.168.149.136:6379: Connection refusedCould not connect to Redis at 192.168.149.136:6379: Connection refused#恢复6379从节点的值redisredis result$ ./start_redis6379.sh#查看6379从节点的值,发现最新数据已经同步过来redisredis $
36、 redis-cli -h 192.168.149.136 -p 6379 -a servyou get DEF 321(5)Master结点6377宕机,查看故障转移,并验证各个哨兵结点指向Master的值是否同步更新?故障转移后历史数据是否还存在?redisredis $ ps -ef|grep redis-redis 2469 1 0 23:35 ? 00:00:00 ./redis-server *:6379 redis 32477 32476 0 16:48 pts/6 00:00:19 ./redis-server *:6377 redis 32511 32510 0 16:49
37、pts/7 00:00:26 ./redis-sentinel *:26377 sentinel redis 32550 32549 0 16:49 pts/8 00:00:19 ./redis-server *:6378 redis 32587 32586 0 16:50 pts/9 00:00:26 ./redis-sentinel *:26378 sentinel redis 32660 32659 0 16:51 pts/11 00:00:25 ./redis-sentinel *:26379 sentinel #杀死Master6377节点的进程redisredis $ kill -
38、9 32477 #查看各个sentine指向master的值,从另外的两个从节点中选举出6379做为master节点redisredis $ redis-cli -h 192.168.149.136 -p 26377 sentinel masters 1) name 2) result 3) ip 4) 192.168.149.136 5) port 6) 6379 7) runid redisredis $ redis-cli -h 192.168.149.136 -p 26378 sentinel masters 1) name 2) result 3) ip 4) 192.168.149
39、.136 5) port 6) 6379 redisredis $ redis-cli -h 192.168.149.136 -p 26379 sentinel masters 1) name 2) result 3) ip 4) 192.168.149.136 5) port 6) 6379#其中1个slave节点6378数据依旧存在redisredis $ redis-cli -h 192.168.149.136 -p 6378 -a servyou get DEF 321#新选举的主节点6379数据依旧存在redisredis $ redis-cli -h 192.168.149.136 -p 6379 -a servyou get DEF 321#原主节点6377已宕机,无法访问redisredis $ r