redir+supervicor 端口映射並監控

1、redir

Redir能夠將一個機器的端口映射爲本機的某個端口,支持TCP鏈接。
Git地址:https://github.com/troglobit/...
下載:git clone https://github.com/troglobit/...html

安裝:

# cd /redir
yum -y install automake
yum -y install autoconf
# ./autogen.sh
# ./configure        //默認目錄爲/usr/local,如需修改目錄則使用# ./configure --prefix=/usr 
# make -j5
# sudo make install-strip
查看help信息 # redir --help
查看版本      # redir -v

運行:

redir -I mysql3307 :4001 192.168.100.100:3307  //吧192.168.100.100的3307端口映射到本機的4001端口

登陸驗證:

# mysql -uroot -p -P4001 -h127.0.0.1

運行:

/usr/local/bin/redir -n -I mysql3306  :4000 192.168.100.100:3306

2、Supervisor的安裝使用

  Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它能夠很方便的監聽、啓動、中止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它從新拉起,很方便的作到進程自動恢復的功能,再也不須要本身寫shell腳原本控制。supervisord 要求管理的程序是非 daemon 程序,supervisord 會幫你把它轉成 daemon 程序,所以若是用 supervisord 來管理進程,進程須要以非daemon的方式啓動。
網址:http://supervisord.org/instal...python

2.1 安裝

# yum install python-setuptools
# easy_install supervisor
或者:pip install supervisor

2.2 配置supervisor

A.建立文件夾和配置文件mysql

# mkdir supervisor
# echo_supervisord_conf > /etc/supervisor/supervisord.conf        
//supervisor服務啓動的時候默認的配置在/etc/supervisord.conf,別煩人目錄需使用-c

B.修改內容supervisord.conf內容
在文件結尾[include]節點處
把;files = relative/directory/.ini改成files = conf.d/.conf
保存並退出
C.執行supervisorctl reload命令使配置文件生效。
D.在/etc/supervisor/下建立conf.d文件夾,及ProjectName.conf(以項目名稱命名的)
E.打開ProjectName.conf文件,添加內容以下:git

[program: ProjectName]
command=dotnet ProjectName.dll ; 運行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令執行的目錄
autorestart=true ; 程序意外退出是否自動重啓
autostart=true ; 是否自動啓動
stderr_logfile=/var/log/ProjectName.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/ProjectName.out.log ; 輸出日誌文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT
startsecs=1 ; 自動重啓間隔

保存並退出
例子:github

[root@vm-test03 conf.d]# cat supervisor_mysql3306.conf 
[program:mysql3306]
command=/usr/local/bin/redir -n -I mysql3306  :4000 192.168.100.100:3306
autostart = true
autorestart = true
startsecs = 1
user = root
stdout_logfile = /data/supervisor/logs/mysql3306_info.log
stderr_logfile = /data/supervisor/logs/mysql3306_err.log

supervisorctl
supervisorctl stop programxxx, 中止某一個進程(programxxx),programxxx 爲 [program:beepkg] 裏配置的值,這個示例就是 beepkg。
supervisorctl start programxxx,  啓動某個進程。
supervisorctl restart programxxx,重啓某個進程。
supervisorctl status,  查看進程狀態。
supervisorctl stop groupworker ,重啓全部屬於名爲 groupworker 這個分組的進程(start,restart 同理)。
supervisorctl stop all,  中止所有進程,注:start、restart、stop 都不會載入最新的配置文件。
supervisorctl reload,   載入最新的配置文件,中止原有進程並按新的配置啓動、管理全部進程。
supervisorctl update,  根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓

2.3配置systemd啓動:

[root@vm-test03 conf.d]# cat /usr/lib/systemd/system/supervisord.service 
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload

KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
相關文章
相關標籤/搜索