CentOS 安裝 NSQ(分散式的即時消息服務平台) 及開機配制設定


NSQ(分散式的即時消息服務平台)

NSQ是一個基於Go語言的分散式即時消息平台,它基於MIT開源協議發佈,程式碼在GitHub,其當前最新版本是1.0.0版。NSQ可用於大規模系統中的即時消息服務,並且每天能夠處理數億級別的消息,其設計目標是為在分散式環境下進行的去除中心化服務提供一個強大的基礎架構。NSQ具有分散式、去除中心化的拓撲結構,該結構具有無單點故障、故障容錯、高可用性以及能夠保證消息的可靠傳遞的特徵。NSQ非常容易配置和部署,且具有最大的靈活性,支持眾多消息協議。另外,官方還提供了拆箱即用Go和Python庫。如果讀者興趣構建自己的客戶端的話,還可以參考官方提供的協議規範

操作法程如下:

  1. Golang 的環境建置
  2. 下載 nsq-compat linux package
  3. 建置 System Services 讓用戶可用指令執行
  4. Firewall的設定
  5. 設定環境變數
  6. 製作NSQ的執行檔,可進行start & stop

1.Golang 的環建置

如果環境尚未建置的話,可以先看一下這一篇

[Golang] 使用 yum 在 Centos 7 上安裝 Golang

2.下載 nsq-compat linux package

下載package進行解壓縮

[root@localhost home]# cd /home/
[root@localhost home]# wget https://s3.amazonaws.com/bitly-downloads/nsq/nsq-1.0.0-compat.linux-amd64.go1.8.tar.gz
[root@localhost home]# tar -xzf nsq-1.0.0-compat.linux-amd64.go1.8.tar.gz
[root@localhost home]# mv nsq-1.0.0-compat.linux-amd64.go1.8 nsq

3.建置 System Services 讓用戶可用指令執行

nsqlookupd.service

[root@localhost home]# vi /usr/lib/systemd/system/nsqlookupd.service

Description=nsqlookup daemon Service 
After=network.target 
[Service] 
Type= 
PrivateTmp=yes 
ExecStart=/home/nsq/bin/nsqlookupd 
Restart=on-abort 


WantedBy=multi-user.target

 

nsqd.service

[root@localhost home]# vi /usr/lib/systemd/system/nsqd.service 

Description=nsqd daemon Service 
After=network.target 
[Service] 
Type= 
PrivateTmp=yes 
ExecStart =/home/nsq/bin/nsqd --lookupd-tcp-address=127.0.0.1:4160 
Restart=on-abort 


WantedBy=multi-user.target

 

nsqadmin.service

[root@localhost home]# vi /usr/lib/systemd/system/nsqadmin.service 


Description=nsqadmin daemon Service 
After=network.target 
[Service] 
Type= 
PrivateTmp=yes 
ExecStart=/home/nsq/bin/nsqadmin --lookupd-http-address=127.0.0.1:4161 
Restart=on-abort 


WantedBy=multi-user.target

執行 services

[root@localhost home]# systemctl enable nsqlookupd 
[root@localhost home]# systemctl enable nsqd 
[root@localhost home]# systemctl enable nsqadmin 
[root@localhost home]# systemctl is-enabled nsqlookupd 
[root@localhost home]# systemctl is-enabled nsqd 
[root@localhost home]# systemctl is-enabled nsqadmin

4.Firewall的設定

增加4150,4171 兩個port

[root@localhost home]# firewall-cmd --zone=public --add-port=4150/tcp --permanent 
[root@localhost home]# firewall-cmd --zone=public --add-port=4171/tcp --permanent #(--permanent永久生效,沒有此參數重啟後失效)

重新載入Firewall規則

[root@localhost home]# firewall-cmd --reload

查看狀況

[root@localhost home]# firewall-cmd --zone=public --query-port=4150/tcp 
[root@localhost home]# firewall-cmd --zone=public --query-port=4171/tcp

5.設定環境變數

[root@localhost home]# vi /etc/profile

export NSQ_HOME=/home/nsq
export PATH=$PATH:$NSQ_HOME/bin

再來請執行 以下語法

source /etc/profile

option(選項)

關閉防火牆:
[root@localhost home]# systemctl stop firewalld.service

關閉開機時啟動功能:
[root@localhost home]# systemctl disable firewalld.service

 

6.製作NSQ的執行檔,可進行start & stop

建立shell script 啟動用 nsq_start.sh

[root@localhost home]# mkdir nsq/log
[root@localhost home]# cd nsq/bin/
[root@localhost home]# vi nsq_start.sh

#服务启动
echo '删除日志文件'
rm -f nsqlookupd.log
rm -f nsqd1.log
rm -f nsqd2.log
rm -f nsqadmin.log

echo '启动nsq服务'
nohup nsqlookupd >nsqlookupd.log 2>&1&

echo '启动nsqd服务'
nohup nsqd --lookupd-tcp-address=0.0.0.0:4160 -tcp-address="0.0.0.0:4150"  --data-path=/home/nsq/log/nsqd1  >nsqd1.log 2>&1&
nohup nsqd --lookupd-tcp-address=0.0.0.0:4160 -tcp-address="0.0.0.0:4152" -http-address="0.0.0.0:4153" --data-path=/home/nsq/lognsqd2 >nsqd2.log 2>&1&

echo '启动nsqdadmin服务'
nohup nsqadmin --lookupd-http-address=0.0.0.0:4161 >nsqadmin.log 2>&1&

執行 NSQ

[root@localhost bin]# sh nsq_start.sh
删除日志文件
启动nsq服务
启动nsqd服务
启动nsqdadmin服务
[root@localhost bin]#

進入本機 http://127.0.0.1:4171/ 從web頁面進行管理

建立shell script 停止用 nsq_stop.sh

[root@localhost home]# cd nsq/bin
[root@localhost home]# vi nsq_stop.sh
#服务停止
ps -ef | grep nsq| grep -v grep | awk '{print $2}' | xargs kill -2

 

,