如何使用confd+ACM管理Nginx配置

Nginx 作为优秀的开源软件,凭借其高性能高并发等特点,常常作为web和反向代理服务部署在生产环境中。但是当 Nginx 的规模较大时, Nginx 的运维成本也是不断上升。本文介绍如何通过confd+ACM来管理 Nginx 配置,通过集中式的配置管理方式解决 Nginx 的大规模运维问题,运维和开发人员不用登陆到 Nginx 机器上,只需要配置好confd,然后在ACM上操作就可以动态修改 Nginx 的配置参数。

准备工作

在操作本文的示例之前需要配置好开通ACM和对confd的使用有基本概念。

Nginx 在日常开发中使用得比较多的功能是负载均衡、限流、缓存等, Nginx 的使用和安装可以在网上查阅相关资料。本文结合负载均衡和限流功能讲解如何使用confd+ACM实现 Nginx 的大规模运维操作。

创建confd配置文件

创建confd所需的toml格式配置文件

vim /etc/confd/conf.d/myapp.toml

check_cmd用于检验 Nginx 配置的正确性,当src配置错误则不会覆盖 Nginx 配置
reload_cmd用于reload Nginx 配置

[template]
src = " Nginx .conf.tmpl"
dest = "/usr/local/ Nginx /conf/ Nginx .conf"
keys = [
"/myapp/ Nginx /conf",
]check_cmd = "/usr/local/ Nginx /sbin/ Nginx  -t -c {{.src}}"
reload_cmd = "/usr/local/ Nginx /sbin/ Nginx  -s reload"

创建模版文件

vim /etc/confd/templates/ Nginx .conf.tmpl

getv从ACM中获取对应dataId的配置,/myapp/ Nginx /conf对应的dataId为myapp. Nginx .conf,配置格式为json格式,模版文件包含了 Nginx 的upstream、限流、黑白名单配置内容,通过json指令解析配置文件。upstream后端ip通过从ACM的配置的backends数组中获取,同样地,白名单和黑名单ip分别存储在whiteList和blackList的数组中,限流的速率和并发数通过rateLimit和connectionLimit设置

...
{{$data := json (getv "/myapp/ Nginx /conf")}}
geo $whiteiplist {default 1;{{range $data.whiteList}}{{.}} 0;{{end}}
}map $whiteiplist $limit {1 $binary_remote_addr;0 "";
}
limit_req_zone $limit zone=rateLimit:10m rate={{$data.rateLimit}}r/s;
limit_conn_zone $limit zone=connectionLimit:10m;{{range $data.blackList}}
deny {{.}};
{{end}}
upstream myapp {server 11.160.65.95:8080;
}
server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;proxy_pass http://myapp;limit_conn connectionLimit {{$data.connectionLimit}};limit_req zone=rateLimit burst={{$data.burst}} nodelay;}
...
}
...

在ACM上创建所需的配置文件

创建dataId为myapp. Nginx .conf的配置文件,group使用默认的DEFAULT_GROUP即可,配置内容设置好上游节点、黑白名单以及限流阈值

{
"backends":["10.0.1.100:80","10.0.1.101:80"],
"whiteList":["10.0.1.102","10.0.1.103"],
"blackList":["10.0.1.104","10.0.1.104"],
"rateLimit":"10",
"connectionLimit":"10",
"burst":"10"
}

启动confd

启动confd,设置好backend、endpoint、命名空间namespace和阿里云账号accessKey/secretKey

confd -backend nacos -endpoint {endpoint}:8080 -namespace {namespace} -accessKey {accessKey} -secretKey {secretKey}

生成配置文件

confd将ACM中的参数通过模板文件渲染生成新的 Nginx 配置文件,查看生成的/usr/local/ Nginx / Nginx .conf配置文件是否符合预期,并检查 Nginx 是否成功reload配置。

...
geo $whiteiplist {default 1;10.0.1.102 0;10.0.1.103 0;}map $whiteiplist $limit {1 $binary_remote_addr;0 "";
}limit_req_zone $limit zone=rateLimit:10m rate=10r/s;
limit_conn_zone $limit zone=connectionLimit:10m;deny 30.5.125.74;deny 10.0.1.105;upstream myapp {server 11.160.65.95:8080;
}
server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;proxy_pass http://myapp;limit_conn connectionLimit 10;limit_req zone=rateLimit burst=10 nodelay;}
...
}
...

动态修改 Nginx 配置

运行时当需要调节 Nginx 的名单或者限流阈值的时候,可以在ACM上修改配置的内容。当然在生产环境可以使用ACM的灰度发布功能(Beta发布)验证没问题再全量发布下去。

本文演示了如何使用confd+ACM管理 Nginx 配置,降低 Nginx 的运维成本。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Soloπ:支付宝开源的Android专项测试工具

1.前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放、图像识别、云测平台等测试技术贴合实际业务需求深度应用和创新,测试效率从而一次又一次被提升…

详析 Kubernetes 在边缘计算领域的发展

作者 | 张杰来源 | 分布式实验室现在开源边缘计算正在经历其业界最具活力的发展阶段。如此多的开源平台,如此多的整合以及如此多的标准化举措!这显示了构建更好平台的强大动力,以便将云计算带到边缘以满足不断增长的需求。同时Kubernetes现在…

Aliyun Serverless VSCode Extension 上架并开源

Aliyun Serverless VSCode Extension Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件是结合了函数计算 Fun 工具以及函数计算 SDK ,为用户提供 VSCode 图形化开发调试函数计算以及操作…

QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法

前言 在阿里七层流量入口接入层(Application Gateway)场景下, Nginx 官方的Smooth Weighted Round-Robin( SWRR )负载均衡算法已经无法再完美施展它的技能。 Tengine 通过实现新的负载均衡算法Virtual Node Smooth We…

支付宝的架构到底有多牛逼?还没看完我就跪了!

来源 | Java 之道自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为了 25.6 万笔/秒。2018 年双 11 的支付峰值为 48 万笔…

Android Native 内存泄漏系统化解决方案

导读:C内存泄漏问题的分析、定位一直是Android平台上困扰开发人员的难题。因为地图渲染、导航等核心功能对性能要求很高,高德地图APP中存在大量的C代码。解决这个问题对于产品质量尤为重要和关键,高德技术团队在实践中形成了一套自己的解决方…

【从入门到放弃-Java】并发编程-线程安全

概述 并发编程,即多条线程在同一时间段内“同时”运行。 在多处理器系统已经普及的今天,多线程能发挥出其优势,如:一个8核cpu的服务器,如果只使用单线程的话,将有7个处理器被闲置,只能发挥出服…

Kubernetes事件离线工具kube-eventer正式开源

前言 监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件百花齐放。除了社区自己孵化的metrics-server,还有从CNCF毕业的Prometheus等等,开发者可选的方案有很多。但是,只有资源类的…

国内首家,腾讯云云开发“全家桶”来了

作者 | 胡巍巍出品 | CSDN(ID:CSDNnews)虽然程序员这行加班多,但不要认为加班就该是常态。有些班,原本可以不加;有些夜,其实可以不熬。俗话说,工具不对,努力白费。如果有…

html-表单的应用

<!-- readonly 只读 --><p>名字: <input type"text" name"username1" value"wang洪亮" readonly></p><!-- disabled 禁用 &#xff0c; 按钮等地方也能用 --><p>性别:<input type"radio" v…

阿里研究员吴翰清:世界需要什么样的智能系统?

阿里妹导读&#xff1a;吴翰清&#xff0c;被大家亲切地称为“小黑”“道哥”。他是阿里巴巴研究员&#xff0c;更是一位“白帽黑客”。15岁&#xff0c;考入西安交大少年班&#xff0c;毕业后应聘阿里。23岁&#xff0c;成为阿里最年轻的高级技术专家。32岁&#xff0c;被评选…

咱们从头到尾说一次 Java 垃圾回收

之前上学的时候有这个一个梗&#xff0c;说在食堂里吃饭&#xff0c;吃完把餐盘端走清理的&#xff0c;是 C 程序员&#xff0c;吃完直接就走的&#xff0c;是 Java 程序员。 确实&#xff0c;在 Java 的世界里&#xff0c;似乎我们不用对垃圾回收那么的专注&#xff0c;很多初…

html-表单初级验证

<!-- placeholder 输入框 提示信息required 非空判断pattern 正则表达式--><p>名字: <input type"text" name"username1" placeholder"请输入名字" required></p><!-- pattern 正则表达式常用正则表达式…

如何将Elasticsearch的快照备份至OSS

前言 Elasticsearch 是一个开源的分布式 RESTful 搜索和分析引擎。它可以在近实时条件下&#xff0c;存储&#xff0c;查询和分析海量的数据。它还支持将快照备份至HDFS/S3上面&#xff0c;而阿里云OSS兼容S3的API&#xff0c;本文将介绍如何使用ES的Repository-S3插件将快照备…

你公司的虚拟机还闲着?基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!...

作者 | 刘春明责编 | Carol出品 | CSDN 云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;封图| CSDN下载于视觉中国目前公司为了降低机器使用成本&#xff0c;对所有的AWS虚拟机进行了盘点&#xff0c;发现利用率低的机器中&#xff0c;有一部分是测试团队用作Jenkins S…

长脸了!阿里云这位英雄拿下了世界第一

阿里云数据库又被顶级机构点名了&#xff01; 近日&#xff0c;全球最知名的数据管理系统评测标准化TPC组织公布了数据库领域分析性能基准测试最新排名&#xff0c;阿里云超大规模分析型数据库AnalyticDB登上榜首&#xff0c;是全球首个通过TPC严格审计认证的云数据库产品。 …

css-第一个CSS

建议使用分离写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- <style>可以编写css的代码&#xff0c;每一个声明&#xff0c;最好使用分号结尾语法:选择器 {声…

跟面试官侃了半小时 MySQL 事务,把原子性、一致性、持久性的实现都讲完了

来源 | 阿丸笔记封图| CSDN下载于视觉中国提到MySQL的事务&#xff0c;我相信对MySQL有了解的同学都能聊上几句&#xff0c;无论是面试求职&#xff0c;还是日常开发&#xff0c;MySQL的事务都跟我们息息相关。而事务的ACID&#xff08;即原子性Atomicity、一致性Consistency、…

阿里云Link TEE获得全球首款GlobalPlatform TEE全配置安全认证

2019年7月12日&#xff0c;阿里云Link TEE正式获得由国际标准组织GlobalPlatform&#xff08;以下简称GP&#xff09;颁发的TEE安全评估认证证书&#xff0c;也成为全球首款获得GP TEE全配置&#xff08;支持TEE Time and Rollback PP-Module和TEE Debug PP-Module&#xff09;…

阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破

阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务&#xff0c;三大能力获得突破 1. 什么是 HTTPDNS &#xff1f; 传统的 DNS&#xff08;Domain Name System&#xff09;使开发者常面临着域名劫持、调度不精准的问题。 HTTPDNS 使用 HTTP 协议替换常用的 UDP 协议&#…