ans_rproxy 说明
ans_rproxy?說(shuō)明
網(wǎng)絡(luò)IP資源分配
Windows2008R2:
? ? ? ? IP: 172.16.204.50/24
? ? ? ??Gateway: 172.16.204.1
? ? ? ??SitePort: 8081
Windows2008R2:
? ? ? ??IP: 172.16.204.53/24
? ? ? ??Gateway: 172.16.204.1
? ? ? ??SitePort: 8081
Ubuntu16.04:
? ? ? ??IP: 172.16.204.184/24
? ? ? ??Gateway: 172.16.204.1
? ? ? ??Rproxy_port: 80
ANS2.2:
? ? ? ??IP: 172.16.204.181/24
? ? ? ??SNIP: 172.16.204.182/24
? ? ? ??VIP: 172.16.204.188/24
?
Web.config?配置
?
<?xml version="1.0"?><!--有關(guān)如何配置 ASP.NET 應(yīng)用程序的詳細(xì)信息,請(qǐng)?jiān)L問(wèn)http://go.microsoft.com/fwlink/?LinkId=169433--><configuration><connectionStrings><add name="ApplicationServices"connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"providerName="System.Data.SqlClient" /></connectionStrings><appSettings><add key="ConnString" value="Data Source=192.168.185.191;Initial Catalog=BaseService;Persist Security Info=True;User ID=sa;Password=qwe123;MultipleActiveResultSets=True"/></appSettings><system.web><compilation debug="true" targetFramework="4.0" /><authentication mode="Forms"><forms loginUrl="~/Account/Login.aspx" timeout="2880" /></authentication><membership><providers><clear/><add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"applicationName="/" /></providers></membership><profile><providers><clear/><add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/></providers></profile><roleManager enabled="false"><providers><clear/><add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /><add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /></providers></roleManager><customErrors mode="Off" /></system.web><system.webServer><modules runAllManagedModulesForAllRequests="true"/></system.webServer> </configuration>?
Ubuntu?服務(wù)器配置
?
1. 停用Ubuntu默認(rèn)的防火墻服務(wù) ( Ubuntu防火墻服務(wù)名稱為: ufw.service 或者?apparmor.service )
myuser@ubsrv:~/ans$ sudo systemctl status apparmor.service myuser@ubsrv:~/ans$ sudo systemctl stop apparmor.service myuser@ubsrv:~/ans$ sudo systemctl disable apparmor.service myuser@ubsrv:~/ans$?
2. 上傳部署文件
myuser@ubsrv:~/ans$ ls ans_rproxy app.json libev.so.4 myuser@ubsrv:~/ans$ file ans_rproxy ans_rproxy3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=bd061a62e823bd0f734b20e4c4ffb03cf58b13f7, not stripped myuser@ubsrv:~/ans$?
3. 設(shè)置ans_rproxy程序的動(dòng)態(tài)鏈接庫(kù)路徑
myuser@ubsrv:~/ans$ chmod +x ./patchelf myuser@ubsrv:~/ans$ ./patchelf --set-rpath ".:./lib:/usr/local/ans/ans_rproxy/lib:/opt/ans/ans_rproxy/lib" ./ans_rproxy myuser@ubsrv:~/ans$ myuser@ubsrv:~/ans$ ./patchelf --print-rpath ./ans_rproxy .:./lib:/usr/local/ans/ans_rproxy/lib:/opt/ans/ans_rproxy/lib myuser@ubsrv:~/ans$?
4. 查看ans_rproxy程序所需的動(dòng)態(tài)鏈接庫(kù)是否存在
若使用系統(tǒng)提供的庫(kù) libev.so.4 ,?可以安裝執(zhí)行命令安裝對(duì)應(yīng)的庫(kù)文件 sudo aptitude install libev4
myuser@ubsrv:~/ans$ chmod +x ./ans_rproxy myuser@ubsrv:~/ans$ ldd ./ans_rproxy linux-vdso.so.1 => (0x00007ffd9b591000)libev.so.4 => ./libev.so.4 (0x00007f19aa342000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19a9f78000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f19a9c6f000)/lib64/ld-linux-x86-64.so.2 (0x00007f19aa550000) myuser@ubsrv:~/ans$?
5. 添加rd_public用戶
備注: Centos?的刪除用戶命令(?userdel -fr rd_public )和添加用戶命令(?useradd -U rd_public )
myuser@ubsrv:~/ans$ sudo deluser -fr rd_public Removing user `rd_public' ... Warning: group `rd_public' has no more members. Done. myuser@ubsrv:~/ans$ myuser@ubsrv:~/ans$ sudo adduser --disabled-login --gecos 'rd_public' rd_public Adding user `rd_public' ... Adding new group `rd_public' (1001) ... Adding new user `rd_public' (1001) with group `rd_public' ... Creating home directory `/home/rd_public' ... Copying files from `/etc/skel' ... myuser@ubsrv:~/ans$ myuser@ubsrv:~/ans$ sudo -u rd_public -H id uid=1001(rd_public) gid=1001(rd_public) groups=1001(rd_public) myuser@ubsrv:~/ans$?
6. 創(chuàng)建工作目錄/opt/ans/ans_rproxy
myuser@ubsrv:~/ans$ sudo mkdir -p /opt/ans/ans_rproxy myuser@ubsrv:~/ans$ sudo chown -R rd_public:rd_public /opt/ans/ans_rproxy myuser@ubsrv:~/ans$ sudo -u rd_public -H cp -Rf ./* /opt/ans/ans_rproxy myuser@ubsrv:~/ans$ cd /opt/ans/ans_rproxy myuser@ubsrv:/opt/ans/ans_rproxy$ ls -alh . drwxr-xr-x 2 rd_public rd_public 4.0K Sep 14 13:50 . drwxr-xr-x 3 root root 4.0K Sep 14 13:20 .. -rwxr-xr-x 1 rd_public rd_public 359K Sep 14 13:50 ans_rproxy -rw-r--r-- 1 rd_public rd_public 324 Sep 14 13:50 app.json -rw-r--r-- 1 rd_public rd_public 55K Sep 14 13:50 libev.so.4 myuser@ubsrv:/opt/ans/ans_rproxy$?
7. 修改配置文件app.json
注意: 默認(rèn)日志文件?在 Ubuntu?上為 /var/log/syslog? 在 CentOS 上為 /var/log/messages
添加的虛擬服務(wù)器列表的權(quán)重值相加的和一定要為100
machine code: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
Please send the above machine code to High-Galaxy Corp.
myuser@ubsrv:/opt/ans/ans_rproxy$?
myuser@ubsrv:/opt/ans/ans_rproxy$ sudo -u rd_public -H vim ./app.json {
"license": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","quiet" : 0,"syslog": 0,"user": "rd_public","group": "rd_public","working_dir": "/opt/ans/ans_rproxy","vservers": [{"host" : "172.16.204.50","port" : "8081","weight" : 60},{"host" : "172.16.204.53","port" : "8081","weight" : 40}] } myuser@ubsrv:/opt/ans/ans_rproxy$
?
8. 測(cè)試服務(wù)器是否可以正常訪問(wèn)
myuser@ubsrv:/opt/ans/ans_rproxy$ curl -I http://172.16.204.50:8081/LoginFuZai.aspx HTTP/1.1 200 OK Cache-Control: private Content-Length: 1624 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 17 Sep 2018 08:29:26 GMTmyuser@ubsrv:/opt/ans/ans_rproxy$ myuser@ubsrv:/opt/ans/ans_rproxy$ curl -I http://172.16.204.53:8081/LoginFuZai.aspx HTTP/1.1 200 OK Cache-Control: private Content-Length: 1624 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 17 Sep 2018 08:29:34 GMTmyuser@ubsrv:/opt/ans/ans_rproxy$?
9. 使用rd_public用戶啟動(dòng)ans_rproxy程序
注意:這里啟動(dòng)會(huì)報(bào)錯(cuò),提示【create_listen: Permission denied】
?
10. 使用sudo調(diào)用root用戶權(quán)限,啟動(dòng)ans_rproxy程序
myuser@ubsrv:/opt/ans/ans_rproxy$ sudo ./ans_rproxy -f ./app.json user [rd_public] group [rd_public] working dir [/opt/ans/ans_rproxy] Added 2 virtual servers. Created listen socket [6]. Created listen socket [7]. start_workers: start(0), count(1) ansrpxy: initialization complete rd_public: uid(1001), gid(1001) In child process with uid (1001) 20180914T154306.928568 [ 3974] {core} Process 0 online 20180914T154306.928816 [ 3974] Worker 0: listen on 6 20180914T154306.928846 [ 3974] Worker 0: listen on 7 20180914T154306.928907 [ 3974] Worker 0 : in event loop. ...... myuser@ubsrv:/opt/ans/ans_rproxy$ myuser@ubsrv:/opt/ans/ans_rproxy$ sudo ps -waux | grep ans_rproxy | grep -v grep root 4114 0.0 0.1 52700 3928 pts/0 S+ 15:51 0:00 sudo ./ans_rproxy -f ./app.json root 4115 0.0 0.0 9648 968 pts/0 S+ 15:51 0:00 ./ans_rproxy -f ./app.json rd_publ+ 4116 0.0 0.0 18096 1816 pts/0 S+ 15:51 0:00 ./ans_rproxy -f ./app.json myuser@ubsrv:/opt/ans/ans_rproxy$ sudo netstat -alntp | grep ans_rproxy | grep -v grep tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4351/ans_rproxy tcp6 0 0 :::80 :::* LISTEN 4351/ans_rproxy myuser@ubsrv:/opt/ans/ans_rproxy$?
11. 使用sudo調(diào)用root用戶權(quán)限,后臺(tái)方式啟動(dòng)ans_rproxy程序
myuser@ubsrv:/opt/ans/ans_rproxy$ sudo nohup ./ans_rproxy -f ./app.json > /dev/null 2>/dev/null & [1] 4143 myuser@ubsrv:/opt/ans/ans_rproxy$ myuser@ubsrv:/opt/ans/ans_rproxy$ sudo ps -waux | grep ans_rproxy | grep -v grep root 4143 0.0 0.1 52700 3936 pts/0 S 15:53 0:00 sudo nohup ./ans_rproxy -f ./app.json root 4144 0.0 0.0 9648 976 pts/0 S 15:53 0:00 ./ans_rproxy -f ./app.json rd_publ+ 4145 0.0 0.0 18096 1832 pts/0 S 15:53 0:00 ./ans_rproxy -f ./app.json myuser@ubsrv:/opt/ans/ans_rproxy$ sudo netstat -alntp | grep ans_rproxy | grep -v grep tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4144/ans_rproxy tcp6 0 0 :::80 :::* LISTEN 4144/ans_rproxy myuser@ubsrv:/opt/ans/ans_rproxy$?
12. 查看ans_rproxy進(jìn)程所占用的系統(tǒng)資源
myuser@ubsrv:/opt/ans/ans_rproxy$ sudo lsof -c ans_rproxy myuser@ubsrv:/opt/ans/ans_rproxy$?
13. 測(cè)試訪問(wèn)ans_rproxy進(jìn)程提供的Session代理服務(wù)
業(yè)務(wù)測(cè)試必須使用客戶端瀏覽器進(jìn)行模擬用戶操作
?
14. 結(jié)束ans_rproxy進(jìn)程
myuser@ubsrv:/opt/ans/ans_rproxy$ sudo ps -waux | grep ans_rproxy | grep -v grep | awk '{print $2}' | sudo xargs kill -9 [1]+ Killed sudo nohup ./ans_rproxy -f ./app.json > /dev/null 2> /dev/null myuser@ubsrv:/opt/ans/ans_rproxy$ sudo ps -waux | grep ans_rproxy | grep -v grep myuser@ubsrv:/opt/ans/ans_rproxy$?
15. 其他配置
#!/usr/bin/env bash #filename: rproxy_ctl.shcur_dir=`pwd` ans_uid=`id -u`usage_rproxy() {echo "Usage: sudo `basename $0` [start|stop|restart|staus|help]"echo " start -- Start program."echo " stop -- Stop program."echo " restart -- Restart program."echo " status -- Display service status."echo " help -- Display help information."return 0 }invoke_sudo() {if [ $ans_uid -ne 0 ]; thensudo id > /dev/null 2>/dev/nullif [ $? -ne 0 ]; thenecho "Elevate permissions failed."return 1fifireturn 0 }start_rproxy() {invoke_sudoif [ $? -ne 0 ]; thenecho "Error: Permission denied."exit 1filocal line_numline_num=`sudo ps -waux | grep ans_rproxy | grep -v rproxy_ctl | grep -v grep | wc -l`if [ $line_num -ne 0 ]; thenecho "Error: Program is already running."return 1fiecho "Start program ..."if [ -f ${cur_dir}/ans_rproxy -a -x ${cur_dir}/ans_rproxy -a -f ${cur_dir}/app.json -a -r ${cur_dir}/app.json ]; thensudo nohup ${cur_dir}/ans_rproxy -f ${cur_dir}/app.json > /dev/null 2>/dev/null &if [ $? -ne 0 ]; thenecho "Error: Program start failed."return 1elseecho "Info: Program start successful."return 0fielseif [ -f /opt/ans/ans_rproxy/ans_rproxy -a -x /opt/ans/ans_rproxy/ans_rproxy -a -f /opt/ans/ans_rproxy/app.json -a -r /opt/ans/ans_rproxy/app.json ]; thensudo nohup /opt/ans/ans_rproxy/ans_rproxy -f /opt/ans/ans_rproxy/app.json > /dev/null 2>/dev/null &if [ $? -ne 0 ]; thenecho "Error: Program start failed."return 1elseecho "Info: Program start successful."return 0fielseecho "Error: File permissions are incorrect."return 1fifi }stop_rproxy() {invoke_sudoif [ $? -ne 0 ]; thenecho "Error: Permission denied."exit 1filocal line_numline_num=`sudo ps -waux | grep ans_rproxy | grep -v rproxy_ctl | grep -v grep | wc -l`if [ $line_num -eq 0 ]; thenecho "Error: Program is not running."return 1fiecho "Stop program ..."sudo ps -waux | grep ans_rproxy | grep -v grep | awk '{print $2}' | sudo xargs kill -9if [ $? -ne 0 ]; thenecho "Error: Program stop failed."return 1elseecho "Info: Program stop successful."return 0fi }restart_rproxy() {invoke_sudoif [ $? -ne 0 ]; thenecho "Error: Permission denied."exit 1filocal line_numline_num=`sudo ps -waux | grep ans_rproxy | grep -v rproxy_ctl | grep -v grep | wc -l`if [ $line_num -ne 0 ]; thenstop_rproxyif [ $? -ne 0 ]; thenecho "Error: Program restart failed."return 1fisleep 3fistart_rproxyif [ $? -ne 0 ]; thenecho "Error: Program restart failed."echo "Info: Please stop program."return 1fireturn 0 }status_rproxy() {invoke_sudoif [ $? -ne 0 ]; thenecho "Error: Permission denied."exit 1fiecho "Service status information:"local ps_num port_numps_num=`sudo ps -waux | grep ans_rproxy | grep -v rproxy_ctl | grep -v grep | wc -l`if [ $ps_num -eq 3 ]; thenecho " Process: [ Running ]"elseecho " Process: [ Not Running ]"fiport_num=`sudo netstat -alntp | grep ans_rproxy | grep -v rproxy_ctl | grep -v grep | wc -l`if [ $port_num -ne 0 ]; thenecho " Prot: [ Running ]"elseecho " Prot: [ Not Running ]"fireturn 0 }case $1 in"start")start_rproxy;;"stop")stop_rproxy;;"restart")restart_rproxy;;"status")status_rproxy;;"help")usage_rproxyexit 0;;*)usage_rproxyexit 0;;esacexit 0?
gxw@gxw-desktop:~$ sudo cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing.# Startup ans_rproxy /opt/ans/ans_rproxy/rproxy_ctl.sh restartexit 0 gxw@gxw-desktop:~$?
?
安獅設(shè)備配置
注意:這里服務(wù)的監(jiān)視器類型必須是TCP類型,?使用HTTP類型的監(jiān)視器將會(huì)導(dǎo)致健康檢查失敗。
> add server srv_rproxy 172.16.204.184 # 添加服務(wù)器Done > add service svc_http_rproxy srv_rproxy http 80 # 添加服務(wù)Done > bind service svc_http_rproxy -monitorName tcp # 給服務(wù)綁定tcp類型的監(jiān)視器Done > show service svc_http_rproxy # 查看服務(wù)的狀態(tài)svc_http_rproxy (172.16.204.184:80) - HTTPState: UPLast state change was at Mon Sep 17 07:41:53 2018 Time since last state change: 0 days, 00:00:11.870Server Name: srv_rproxy Server ID : None Monitor Threshold : 0Max Conn: 0 Max Req: 0 Max Bandwidth: 0 kbitsUse Source IP: NO Client Keepalive(CKA): NOAccess Down Service: NOTCP Buffering(TCPB): NOHTTP Compression(CMP): YESIdle timeout: Client: 180 sec Server: 360 secClient IP: DISABLED Cacheable: NOSC: OFFSP: ONDown state flush: ENABLEDAppflow logging: ENABLEDTD: 01) Monitor Name: tcpState: UP Weight: 1 Passive: 0Probes: 12 Failed [Total: 9 Current: 0]Last response: Success - TCP syn+ack received.Response Time: 0.0 millisecDone > > add lb vserver lb_vsrv_http_rproxy http 172.16.204.188 80 -lbmethod ROUNDROBIN -persistenceType COOKIEINSERT -timeout 0 # 添加負(fù)載均衡虛擬服務(wù)器Done > bind lb vserver lb_vsrv_http_rproxy svc_http_rproxy # 給負(fù)載均衡虛擬服務(wù)器綁定服務(wù)Done > show lb vserver lb_vsrv_http_rproxy # 查看負(fù)載均衡虛擬服務(wù)器的狀態(tài)lb_vsrv_http_rproxy (172.16.204.188:80) - HTTP Type: ADDRESS State: UPLast state change was at Mon Sep 17 07:41:53 2018Time since last state change: 0 days, 00:00:44.320Effective State: UPClient Idle Timeout: 180 secDown state flush: ENABLEDDisable Primary Vserver On Down : DISABLEDAppflow logging: ENABLEDPort Rewrite : DISABLEDNo. of Bound Services : 1 (Total) 1 (Active)Configured Method: ROUNDROBINMode: IPPersistence: COOKIEINSERT (version 0) Persistence Timeout: 0 minVserver IP and Port insertion: OFF Push: DISABLED Push VServer: Push Multi Clients: NOPush Label Rule: noneL2Conn: OFFSkip Persistency: NoneIcmpResponse: PASSIVENew Service Startup Request Rate: 0 PER_SECOND, Increment Interval: 0TD: 0Mac mode Retain Vlan: DISABLEDDBS_LB: DISABLED1) svc_http_rproxy (172.16.204.184: 80) - HTTP State: UP Weight: 1Persistence Cookie Value : NSC_mc_wtsw_iuuq_sqspyz=ffffffffad04caaf1e171659141d0e58464652443660Done >?
客戶端驗(yàn)證測(cè)試
?
1.?驗(yàn)證按權(quán)重值切換服務(wù)器
win1_50啟用web服務(wù), win2_53啟用web服務(wù),用戶請(qǐng)求按權(quán)重比例分配給win1_50和win2_53服務(wù)器。
?
2.?驗(yàn)證服務(wù)器故障自動(dòng)切換
win1_50啟用web服務(wù), win2_53啟用web服務(wù),此時(shí)進(jìn)行用戶登陸操作,操作頁(yè)面正常。
此時(shí)禁用win2_53的web服務(wù), 操作頁(yè)面正常,用戶請(qǐng)求自動(dòng)發(fā)送win1_50服務(wù)器。
?
3.?查看ans_rproxy進(jìn)程服務(wù)日志
?
FAQ:
1.?管理員賬戶密碼忘記時(shí),可直接操作數(shù)據(jù)庫(kù)重置密碼。
> select ShortName,Password,IsLock from domasv30.userinfo; > update domasv30.userinfo set Password=md5('admin') where ShortName='ADMIN';?
========================?End
?
轉(zhuǎn)載于:https://www.cnblogs.com/lsgxeva/p/9647377.html
總結(jié)
以上是生活随笔為你收集整理的ans_rproxy 说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Python画一朵玫瑰花
- 下一篇: 残差网络(Residual Networ