NSQ环境搭建:
1.官网下载release bin包 - https://nsq.io/deployment/installing.html。此处使用nsq-1.1.0.linux-amd64.go1.10.3.tar.gz。
当前目录解压 tar -zxvf nsq-1.1.0.linux-amd64.go1.10.3.tar.gz
解压后:(nsq-1.1.0.linux-amd64.go1.10.3/bin)
2. 为了使用https进行通信,需要生成证书,使用的如下命令(可参考http://www.cnblogs.com/vincentfu/p/5475248.html)
本例采用双向认证,证书采用已有的
使用无 CA 证书的单向认证:key.pem(私钥, pem采用Base64编码), cert.pem证书。
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -nodes
3. 开始启动nsq(以下示例采用已经存的证书)
a. 在第1个shell下启动nsqlookupd,该进程主要用于管理拓扑信息。其他client从该进程获取nsqd相关信息,例如topic和channel。
./nsqlookupd -verbose
b. 在第2个shell启动nsqd
注意:此处设置不校验tls客户端,无需设置-tls-client-auth-policy, 且-tls-required=false,这样nsqadmin和nsq_to_file进程无需tls可正常连接
./nsqd -broadcast-address=127.0.0.1 -https-address=0.0.0.0:4152 -lookupd-tcp-address=127.0.0.1:4160 -tls-cert="/root/nsq/server_certs/server.pem" -tls-key="/root/nsq/server_certs/server.key" -tls-root-ca-file="/root/nsq/server_certs/cacert.pem" -tls-required=false -verbose
c.在第3个shell启动nsqadmin, 用来管理webui; (web访问 http://hostip:4171)
./nsqadmin --lookupd-http-address=127.0.0.1:4161 -verbose
d.在第4个shell用curl命令测试返回OK成功
curl --tlsv1 --cert /root/nsq/client_certs/smac_fw.pem --key /root/nsq/client_certs/smac_fw.key --cacert /root/nsq/client_certs/smac_cacert.pem -H "Content-Type:application/json" -X POST --data '{"12345":{"456":789}}' https://hostname:4152/pub?topic=test1
e.在第5个shell用启动nsq_to_file,将curl发送的命令写到文件
注:此处的topic必须和curl的topic保持一致
./nsq_to_file --topic=test1 --output-dir=/tmp --lookupd-http-address=127.0.0.1:4161