nginx

Docker

拟墨画扇 提交于 2021-02-12 03:43:57
原文: Docker - 容器部署 Consul 集群 目录 说明 简介 了解 Consul Consul 使用场景 Consul 优势 Consul 中的概念 安装 准备 Consul 镜像 安装单个 Consul 组装集群 Consul 总结 引用和附件 说明 本文主要介绍怎么使用 Docker 在 Linux 环境部署 Consul 集群,如果你对 Docker 不了解的同学,请先学习一下 Docker。推荐一本学习 Docker 在线书籍 : 【Docker入门到实践】 。 本文介绍 Consul 部署已经在准备好 Docker 环境好前提下开始的。 CentOS 7.3 Docker CE 18.09.2 简介 了解 Consul Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。 Consul 支持 健康检查 ,并允许 HTTP 、 GRPC 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.

Ansible的安装及常用模块

六月ゝ 毕业季﹏ 提交于 2021-02-12 03:41:02
简介 Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。 Ansible 特点: 1、部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。 2、默认使用 SSH(Secure Shell)协议对设备进行管理。 3、主从集中化管理。 4、配置简单、功能强大、扩展性强。 5、支持 API 及自定义模块,可通过 Python 轻松扩展。 6、通过 Playbooks 来定制强大的配置、状态管理。 7、对云计算平台、大数据都有很好的支持。 8、提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。 Ansible 与 SaltStack: 1、最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。 2、相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。 安装ansible yum安装 yum -y install ansible 配置ansible tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg # ansible.cfg 是 Ansible 工具的配置文件; ├──

TCP接入层的负载均衡、高可用、扩展性架构

故事扮演 提交于 2021-02-12 02:47:16
一、web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层: 上游调用层,一般是browser或者APP 中间反向代理层,nginx 下游真实接入集群,web-server,常见web-server的有tomcat,apache 整个访问过程为: browser向daojia.com发起请求 DNS服务器将daojia.com解析为外网IP(1.2.3.4) browser通过外网IP(1.2.3.4)访问nginx nginx实施负载均衡策略,常见策略有轮询,随机,IP-hash等 nginx将请求转发给内网IP(192.168.0.1)的web-server 由于http短连接,以及web应用无状态的特性,理论上任何一个http请求落在任意一台web-server都应该得到正常处理(如果必须落在一台,说明架构不合理,不能水平扩展)。 问题来了,tcp是有状态的连接,客户端和服务端一旦建立连接,一个client发起的请求必须落在同一台tcp-server上,此时如何做负载均衡,如何保证水平扩展呢? 二、单机法tcp-server 单个tcp-server显然是可以保证请求一致性: client向tcp.daojia.com发起tcp请求 DNS服务器将tcp.daojia.com解析为外网IP(1.2.3

通过监控Nginx日志来实时屏蔽高频恶意访问的IP

僤鯓⒐⒋嵵緔 提交于 2021-02-11 23:05:43
目前在我的VPS上主要通过两种方式来限制ip的访问次数。 通过Nginx的 limit_req 配置来限制同一ip在一分钟内的访问次数 通过Nginx deny封禁一天内超过指定次数的ip(需要一个监控脚本) 一、limit_req配置 Nginx 提供了两个模块: ngx_http_limit_req_module 和 ngx_http_limit_conn_module ,前者是限制同一ip在一段时间内的访问总次数,后者是限制同一ip的并发请求次数。 我的配置主要如下: http { limit_req_zone $binary_remote_addr zone=onelimit:10m rate=20r/m; server { ... location / { limit_req zone=onelimit burst=5 nodelay; limit_req_log_level warn; } } } $binary_remote_addr 根据客户端ip作为键值,zone设置唯一标识并设置存储内存大小,每分钟请求不超过20次,否则返回503错误。 burst=5 表示如果超过频率限制后可缓冲的等待请求数。nodelay表示burst部分不需要等待,nginx会直接处理等待部分的请求。 limit_req_log_level warn

Docker 镜像

孤者浪人 提交于 2021-02-11 22:03:34
镜像是部署应用的基石 镜像是什么? 1.一个分层存储的文件:优点 - 易于扩展、优化存储空间 2.一个软件的环境 3.一个镜像可以创建N个容器 4.一种标准化的交付 镜像不是一个单一的文件,而是有多层构成。可以通过docker history <ID/NAME>查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默认存储在/var/lib/docker/<stoage-driver> [root@node1 ~]# docker history nginx IMAGE CREATED CREATED BY SIZE COMMENT 881bd08c0b08 47 hours ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B <missing> 47 hours ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B <missing> 47 hours ago /bin/sh -c #(nop) EXPOSE 80 0B <missing> 47 hours ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B <missing> 47 hours ago /bin/sh -c set -x && apt

python线程和进程

被刻印的时光 ゝ 提交于 2021-02-11 21:01:08
总结 1,怎么创建进程和启动 2,jion方法的作用 3,subprocess模块的作用和使用 4,线程的创建和启动 5,继承线程类创建 6,临界资源 7,多线程的通信,设置一个全局变量 8,如何对临界资源进行保护,线程锁 9, 如何加锁和解锁 10,io密集和计算密集 11,协程:单线程+异步IO 在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一: 如果某个子线程的daemon属性为False,主线程结束时会检测该子线程是否结束,如果该子线程还在运行,则主线程会等待它完成后再退出; 如果某个子线程的daemon属性为True,主线程运行结束时不对这个子线程进行检查而直接退出,同时所有daemon值为True的子线程将随主线程一起结束,而不论是否运行完成。 进程和线程 今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持“多任务”的操作系统,这使得我们可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而缩短程序的执行时间,同时也让用户获得更好的体验。因此在当下不管是用什么编程语言进行开发,实现让程序同时执行多个任务也就是常说的“并发编程”,应该是程序员必备技能之一。为此,我们需要先讨论两个概念,一个叫进程,一个叫线程。 概念

CentOS7编写systemd服务脚本

爷,独闯天下 提交于 2021-02-11 20:49:57
简介 在CentOS6中写服务脚本,需要放在/etc/init.d/目录下,且脚本编写较复杂在。而在CentOS7中写服务脚本,只需要按照格式编写即可。 CentOS6中服务脚本zabbix_server 参考linux老男孩-shell编程实战185页 #!/bin/ sh #chkconfig: 2345 80 05 #description: zabbix path =/user/local/zabbix/ sbin pid =/tmp/ zabbix_server.pid conf =/user/local/zabbix/etc/ zabbix_server.conf RETVAL = 0 . /etc/init.d/ functions start(){ if [ ! -f $pid ]; then $path /zabbix_server - c $conf RETVAL =$? if [ $RETVAL -eq 0 ]; then action " zabbix_server is started " /bin/ true return $RETVAL else action " zabbix_server is started " /bin/ false return $RETVAL fi else echo " zabbix_server is running "

用nodejs搭建代理服务器

邮差的信 提交于 2021-02-11 20:34:35
题图 From 极客时间 From Clm 前端开发者在工作中常常遇到跨域的问题,一般我们遇到跨域问题主要使用以下办法来解决: 1、jsonp 2、cors 3、配置代理服务器。 jsonp不是很灵活,只能发送get请求,不能发送psot请求,而cors虽然可以支持多种请求格式,但是如果请求携带cookie的话,还需要服务端和客户端分别配置一下,个人感觉也很麻烦。 相对于前两种,使用代理服务器解决跨域问题就简单了好多。 浏览器由于同源策略的原因,不同域名之间发送ajax请求,响应的数据不会被浏览器加载。而服务器向服务器发送请求则没有同源策略的限制。 下图便是代理服务器的原理了: 代理服务器只是起一个中转作用,配置代理服务器的方法有很多种,比如利用apache、nginx、tomcat等等,今天给大家介绍的是用nodejs配置代理服务器,用nodejs配置代理服务器,我们需要借助两个npm包,一个是web开发框架 express ,一个是express中间件 http-proxy-middleware 。 首先第一步我们先用express搭建两个服务器,一个静态资源服务器端口号为3000,一个接口服务器端口号为5000,静态资源服务器代码如下: var express = require ( 'express' ); var app = express(); app.use

Redmine(三)——Redmine日常使用

旧巷老猫 提交于 2021-02-11 18:56:48
<p style="-webkit-print-color-adjust: exact; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 22px; margin-top: 0px !important;"><span style="font-size: 1.5em;">Redmine日常使用</span></p> <h3 style="-webkit-print-color-adjust: exact; margin: 20px 0px 10px; padding: 0px; -webkit-font-smoothing: antialiased; cursor: text; position: relative; font-size: 18px; font-family: Helvetica, arial, sans-serif;">1、主题更换</h3> <blockquote style="-webkit-print-color-adjust: exact; margin: 15px 0px; border-left-color: #dddddd; padding

How to run two js apps on different url with Nginx?

为君一笑 提交于 2021-02-11 17:52:04
问题 I want to run two different js apps on my Nginx server. My problem is that I want to enable the React app on the main URL / on port 3000 and different js app on port 1337. When I set React App on the main URL it's working properly but any application on different URL like /admin that loads the second app it's not loaded properly. I have changed the paths and now I have my second app on main URL / and it's working properly but when I run React app on /admin URL it cannot load files properly.