nsq 随录

nsq

nsq 官网
nsq
go-nsq

组件

nsqlookupd

是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息。

阅读更多

Kong 随记

端口

默认情况下 kong 监控一下端口

  • :8000 监听来自客户端的传入HTTP流量,并将其转发到上游服务。
  • :8443监听来自客户端的HTTPS流量。此端口具有与端口类似的行为:8000,但它仅需要HTTPS流量。可以通过配置文件禁用此端口。80008443 作为提供服务的端口,在正常的线上服务是需要修改成 80443 端口。使用 docker来启动会很方便做端口映射,而不需要对配置做修改
  • :8001 管理端口,提供管理 Admin API
  • :8444 Admin APIHTTPS 端口

在最开始的看 Kong 相关的时候,一下看到 4 个服务端口会有些焦虑,实际上只是只是两种服务提供了 HTTPHTTPS 的访问,8000和8443提供服务,8001和8443 用来管理。

阅读更多

理解 zabbix 配置

zabbix 配置看上去很复杂。 实际上是由于界面布局不合理,功能都是以展示为主,平铺直列。在直观状态下实际上是误导。

作为一个运维监控的工具。把我们自己需要的功能对应到 zabbix 上,就会变的很好理解。

基本需求,就是需要监控一群机器,并给出相应的可视化的表或者提示。 实际上可以按照层级关系列出,而不是按照 zabbix 界面的平铺。

阅读更多

firefox 安装 copper 插件

Firefox 升级后开始不支持三方协议的插件,调试 coap 协议使用的 Copper 插件在Firefox上不起作用。

需要做调试的时候,发现在关闭了 Firefox 更新的情况下 Copper 插件依然不起作用,于是想着重新安装,在插件商店里面居然已经找不到 Copper 这个插件了。官方已经将这个插件从 Firefox 的商店下架了。

解决方法

  1. Copper Github地址 https://github.com/mkovatsc/Copper
  2. Firefox RES 版 https://ftp.mozilla.org/pub/firefox/releases/52.0.2esr/

使用RES版是因为正常的版本从源码加载插件插件依然无法使用

安装方式

安装方式参考github的安装说明

  1. 从github拉取 Copper 源码 clone git://github.com/mkovatsc/Copper.git
  2. 创建一个名为 copper@vs.inf.ethz.ch 的文件 到firefox的 extensions 目录,路径如下
    • Windows: C:\Users\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default\extensions\
    • Linux:~/.mozilla/firefox/xxxxxxxx.default/extensions/
    • MacOS:~/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/extensions/
  3. 将第一步中clone的源码路径添加到第二步创建的文件中
  4. 在 firefox 中打开 about:config 设置 xpinstall.signatures.required 为 false
    5.. 重启 firefox 。

nginx在proxy_pass里使用变量

nginx server_name 配置文档: http://nginx.org/en/docs/http/server_names.html

在做 nginx 正则表达式 proxy_pass,nginx 反向代理不过去。 比如

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name ~^(?<user>.+)\.domain\.com$;
location / {
proxy_pass <http://$user.domain1.com>;
}

}

会报出如下错误

no resolver defined to resolve xxx.xxx

web端返回http 502 错误。

在Ngnix中如果用变量作为反向代理的地址时,容易出现“no resolver defined to resolve xxx.xxx”的问题

在 Nginx 0.6.18 后启用了 resolver 指令,在使用变量来构造某个server地址的时候一定要用resolver指令来指定DNS服务器的地址

所以在nginx的配置文件中的http{}部分添加一行resolver 8.8.8.8;

resolver 8.8.8.8;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name ~^(?<user>.+)\.pay\.iov-smart\.net$;

location / {
# set $subdomain "";
# if ($host ~* "^(.+)\.pay\.iov-smart\.net$"){
# set $subdomain $1;
# }

resolver 8.8.8.8;
proxy_pass http://$user.pay.iov-smart.net:6001;
}
}

docker build openwrt 遇到的小问题

在使用 docker 编译 openwrt 遇到了两个坑,问题不复杂,却折腾了一天。

环境如下

  • Dockerfile 定义编译 openwrt 的编译环境
  • docker-compose.yml 定义变化 openwrt 的运行配置,主要是将代码目录 data 使用 -v 映射到容器中
  • /data 代码存放目录
阅读更多

docker-compose 中的 external-links

在使用服务时使用同一台服务器的 mysql 的 docker 服务。想到 external-links 这个配置。

按照文档的配置添加了如下配置

1
2
3
external_links:
- mysql_mysql_1:mysql

但是配置无论如何都不成功。

https://docs.docker.com/compose/compose-file/#external_links

官方文档相关的描述,

If you’re using the version 2 or above file format, the externally-created containers must be connected to at least one of the same networks as the service that is linking to them.

也就是说想要使用 external_links 是需要两个服务在同一个网络段,这里只提了一句,对第一次写配置文件的开发者非常的不友好。

阅读更多

minikube

​​

Minikube

  1. 安装minikube阿里修改版的

阅读更多

用 git 来 对letsencrypt 证书管理

在做 https 的时候,使用了 letsencrypt 的证书,letsencrypt 的证书 90 天更新一次,正常情况下,只有一个域名就很方便处理,写一个 crontab 就搞定了。

letsencrypt 出了泛域名后,泛域名只支持 1 级的匹配。当有多个子域名使用的时候,管理起来就很难受。

所幸的是,acme.sh 支持 deploy_hook 来自行调用一个 shell 脚本。所以用不到10行的代码,做了一个利用 git 来管理域名证书。

  1. 首先在acme.sh里面配置一个 git 的地址。
  2. 申请泛域名时同时申请泛域名的主域名
  3. hook 提交按照域名提交到不同的分支
  4. 线上对应的域名只需要配置一个 crontab 来定时拉 git ,重启服务。

思路虽然简单粗暴,这样做的好处是可以很清楚的在git上面看到证书的更新,同时更新也可以利用 gitlab 的 hook 通知到 钉钉。

阅读更多

Jenkins-docker-ansible自动化上线

从11月开始到现在,项目开始从 php 转换到 nodejs + 后端服务,相应的部署环境转换到docker。

在使用纯php环境,上线比较简单,主要是代码拉取,拷贝和软链切换。 运行环境使用docker后相应的需要引入一个打包的过程,所以前面所依靠的上线部署系统无法满足当前的需求。

目前来说,Jenkins 作为自动化的流水线工具,几乎是不二的选择。

将 Jenkins 作为流水线工具,在打包阶段依赖 docker-compose。 上线阶段依赖 ansible 。

阅读更多