kubernetes集群中服务的负载均衡和外部发现

传统的负载均衡策略一般是:

客户端 -> dns -> 4层库在均衡(HA) -> 7层负载均衡 -> 具体的后端服务

这种方式处理服务发现和动态配置比较难搞,比如后端服务动态扩缩容什么的。
一开始的做法肯定是OP人工维护7层负载均衡集群配置,以nginx为例,用git仓库之类的做人工服务发现和变更。这样很显然是不科学的。然后就会开始希望用种种自动化的手段去处理服务发现,比如微博的nginx-upsync-module,比如nginx-lua,比如openresty,比如etcd+confd等种种手段实现服务发现和自动化配置,但还是有很多瑕疵,比如etcd+confd每次修改upstream的服务后端就要reload nginx,nginx的策略会新开x个worker,容易造成性能问题甚至机器顶不住。而且vm服务机器的逻辑和upstream挂钩也有问题,总之,麻烦的很。

而kubernetes处理这一套服务发现和负载均衡的方法就挺好用的,比如接下来会实践的这一套nginx-ingress+externalIP+dns的方式就很直观而且方便自动化流程,大致策略如下:

客户端 -> dns -> k8s-nginx-ingress-service(in ExternalIP) -> ingress-obj -> service -> pod

继续阅读“kubernetes集群中服务的负载均衡和外部发现”

myip.calmkart.com获取自己的出口ip

最近在学陶辉的Nginx核心知识100讲,听到postread阶段的时候,顺手用realip模块弄了个小东西,用来获取自己的出口ip.

地址myip.calmkart.com

# curl或访问myip.calmkart.com即可,将返回你的出口ip
curl myip.calmkart.com

类似ifconfig.me,不细说了,小东西,留个存根。

一个自解析nginx upstream和location并检测连通性的web系统

最近做的一个小web系统,主要的思路是,怎样才能将nginx集群的海量配置文件,包括server和upstream及location等完全对象化
想做的东西就类似于httpdns,将nginx的海量配置文件对象化,或者考虑能不能数据库化
现在的功能只是解析所有nginx配置文件,自动读取upstream列表和location中proxy_pass,然后做连接性追踪
当然,追踪列表也可自定义添加,在admin后台配置即可
最终效果图
custom
back
继续阅读“一个自解析nginx upstream和location并检测连通性的web系统”

nginx配置文件nginx.conf中文详解

######Nginx配置文件nginx.conf中文详解#####

#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;
 
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /usr/local/nginx/logs/error.log info;

#进程pid文件
pid /usr/local/nginx/logs/nginx.pid;
 继续阅读“nginx配置文件nginx.conf中文详解”