linux怎么查看本机内存大小
296
2022-10-22
Docker consul的容器服务更新与发现
Docker consul的容器服务更新与发现
理论部分
(1)什么是服务注册与发现服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决手段是在服务前端负载均衡,这样前端必须要知道所有后端服务的网络位置,并配置在配置文件中。这里就会有几个问题:●如果需要调用后端服务A-N,就需要配置N个服务的网络位置,配置很麻烦●后端服务的网络位置变化,都需要改变每个调用者的配置
在client模式下,所有注册到当前节点的服务会被转发到server节点,本身是不持久化这些信息。在server模式下,功能和client模式相似,唯一不同的是,它会把所有的信息持久化到本地,这样遇到故障,信息是可以被保留的。server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。
consul提供的一些关键特性:服务注册与发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。Key/Value存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。多数据中心:无需复杂的配置,即可支持任意数量的区域。
实验 建立consul服务
环境:server:192.168.206.4客户端(client):192.168.206.5建立Consul服务
每个提供服务的节点上都要部署和运行Consul的agent
Consul agent有两种运行模式ServerClient
Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关server部署(192.168.206.4)```html/xml
mkdir /root/consulcd consulunzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin
先在root目录下创建一个comsul,然后把包都传过来 ![1.png](https://s2./images/20220314/1647260748116373.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 完成后解压包,移动到/usr/bin ![1.1.png](https://s2./images/20220314/1647260751831668.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ```html/xml #下面是编译安装 consul agent \ -server \ -bootstrap \ -ui \ -data-dir=/var/lib/consul-data \ -bind=192.168.206.4 \ -client=0.0.0.0 \ -node=consul-server01 &> /var/log/consul.log & consul members #查看集群的成员 consul info | grep leader #过滤出leader
容器服务自动加入nginx集群安装Registrator
docker run -d \--name=registrator \--net=host \-v /var/run/docker.sock:/tmp/docker.sock \--restart=always \gliderlabs/registrator:latest \-ip=192.168.206.5 \consul://192.168.206.4:8500
制定ip本机、以及consul server ![3.png](https://s2./images/20220314/1647261546734770.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![3.1.png](https://s2./images/20220314/1647261574579412.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 查看镜像registrator:latest是否启动 ![3.2.png](https://s2./images/20220314/1647261588223143.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ```html/xml systemctl restart docker #重启docker #下面运行2个nginx、2个阿帕奇(我用了online的阿里加速) docker run -itd -p:81:80 --name test-01 -h test01 nginx docker run -itd -p:82:80 --name test-02 -h test02 nginx docker run -itd -p:83:80 --name test-03 -h test03 httpd docker run -itd -p:84:80 --name test-04 -h test04 ~/consul/vim nginx.ctmpl...................................................upstream {{{range service "nginx"}}server {{.Address}}:{{.Port}};{{end}}}
server {listen 100;server_name localhost 192.168.184.11;access_log /var/log/nginx/lic.com-access.log;index index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass }.................................................
![1.png](https://s2./images/20220314/1647262835159528.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![1.1.png](https://s2./images/20220314/1647262838282363.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ```html/xml #下面是安装nginx(nginx1.12.2传给opt) yum -y install gcc pcre-devel zlib-devel tar zxvf nginx-1.12.2.tar.gz -C /opt cd /opt/nginx-1.12.2 ./configure --prefix=/usr/local/nginx make && make install
```html/xml修改nginx的配置文件vim /usr/local/nginx/conf/nginx.conf19行添加 include vhost/*.conf;
![3.png](https://s2./images/20220314/1647263573272422.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ```html/xml cd /usr/local/nginx/conf/ mkdir vhost mkdir /var/log/nginx /usr/local/nginx/sbin/nginx #启动ngixn的服务 #安装template cd /opt unzip consul-template_0.19.3_linux_amd64.zip mv consul-template /usr/bin #把监听的nginx移动到vhost,重启服务 consul-template -consul-addr 192.168.206.4:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/lic.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info 然后在客户段再运行一个容器 docker run -itd -p:85:80 --name test-05 -h test05 nginx
```html/xml测试server端是否可以使用代理访问轮询#浏览器访问logs -f test-01docker logs -f test-02docker logs -f test-05
![1.4.png](https://s2./images/20220314/1647265275862375.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 拓展:拓展更多的consul节点 ```html/xml consul多节点 添加一台有docker环境的服务器加入已有的集群 consul agent \ -server \ --bootstrap \ -ui \ -data-dir=/var/lib/consul-data \ -bind=192.168.206.4 \ -client=0.0.0.0 \ -node=consul-server02 \ -enable-script-checks=true \ -datacenter=dc1 \ -join 192.168.206.6 &> /var/log/consul.log & #注释 --enable-script-ckecks=true:设置检查服务为可用 -datacenter:数据中心名称 -join:加入到已有的集群中 -bind=192.168.206.4 \ 监听server端口 -join 192.168.206.6 &> /var/log/consul.log & 新加入的IP
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~