nginx的进程模型和大多数后台服务程序一样,按职责将进程分成监控进程和工作进程两类,启动nginx的主进程充当监控进程,而由主进程fork出来的子进程则充当工作进程。工作进程的任务自然是完成具体的业务逻辑,而监控进程充当整个进程组的对外接口,同时对工...
运行在多进程模型的nginx在正常工作时,自然就会有多个进程实例,比如下图是在配置worker_processes 4;情况下的显示,nginx设置的进程title能很好的帮助我们区分监控进程与工作进程,不过带上选项f的ps命令以树目录的形式打印各个进程信息也能帮助我们做这个...
共享内存是Linux下进程之间进行数据通信的最有效方式之一,而nginx就为我们提供了统一的操作接口来使用共享内存。 在nginx里,一块完整的内存以结构体ngx_shm_zone_s封装.其中包括是共享内存的名字(shm_zone[i].shm.name),大小(shm_zone[i].shm.size),标签(s...
slab的一些结构体: typedef struct { ngx_atomic_t lock ; // 锁,因为slab在nginx中一般配合共享内存使用 size_t min_size; // 分配空间的最小值 size_t min_shift; // 该最小值对应的移位数 ngx_slab_page_t *pages; // 页数组 ngx_slab_page_t free; //...
首先来看一下,配置文件解析时的数据结构,这里主要是ngx_conf_t, 这个结构保存了解析配置文件所需要的一些域,是一个非常重要的数据结构. struct ngx_conf_s{ char *name; // 当前解析的命令名 ngx_array_t *args; // 当前命令的所有参数 ngx_cycle_t * cycl...
1. 一些相关的数据结构: // 监听端口配置信息,addrs是在该端口上所有监听地址的数组。 typedef struct { ngx_int_t family; in_port_t port; ngx_array_t addrs; /* array of ngx_http_conf_addr_t */ } ngx_http_conf_port_t; typedef struct { ngx_http_l...
对于web server来说,必须能够监听到客户端的连接才能与之通信,这篇文章就看一下nginx是如何实现连接的建立。监听到新的连接实际上就是监听socket上的读事件,此时监听socket的已完成连接队列是非空的,可以非阻塞的调用accpet获取新到的连接。在nginx中每...
对于一个服务器模型来说,事件模型是至关重要的,nginx本身的高性能也归功于它的事件模型。一般来说,nginx的事件模型是基于epoll。而epoll中会调用3函数,epoll_create,epoll_ctl,epoll_wait. (1) 首先介绍一些相关的数据结构: typedef struct { ngx_int_t...
nginx的模块非常之多,可以认为所有代码都是以模块的形式组织,这包括核心模块和功能模块,针对不同的应用场合,并非所有的功能模块都要被用到,附录A给出的是默认configure(即简单的http服务器应用)下被连接的模块,这里虽说是模块连接,但nginx不会像apa...
在通常的Linux服务器中,有一些服务本身没有日志,只能通过 tail -f /var/log/messages来查看其运行日志,比如nrpe server。但是,如果想在docker容器中实现这个功能就需要费点事了。具体步骤如下: 1、安装rsyslog # yum -y install rsyslog 2、启动syslog...
最近接了一个任务,就是测试公司服务器的资源利用率,这样对每种业务平时所占资源有了大体的了解,进而为下一步的虚拟化做准备。找了很多开源的工具,但都不理想,有的安装很复杂,需要联网(而我们的服务器很多都不能够联网);有的分析出的数据还需要自己...
最近发现某台机器上的Docker服务无法开启,报如下错误: [root@localhost ~]# docker ps -aCannot connect to the Docker daemon. Is docker -d running on this host?[root@localhost ~]# service docker restartRedirecting to /bin/systemctl restart doc...
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式...
在上一篇文章《quay.io/coreos/etcd 基于Docker镜像的集群搭建》中,介绍了ETCD集群的搭建。在此基础上,我们进一步实践calico docker的应用。 PaaS 平台的网络需求: 在使用Docker构建PaaS平台的过程中,我们首先遇到的问题是需要选择一个满足需求的网络模...
在查容器内部资源利用情况时候,发现top命令无法使用,报错TERM environment variable not set.。从网上找到了解决方案,如下。 [root@localhost ~]# docker exec -ti redis /bin/bash[root@9bf53a30e849 /]# topTERM environment variable not set.[root@9b...
docker stop 与 docker kill 均可以将容器停掉,但二者究竟有什么区别呢?首先,摘录一下官网对这两个功能的描述: docker stop: Stop a running container (send SIGTERM, and then SIGKILL after grace period) [...] The main process inside the containe...
Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法: 1.cpuset CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是...
测试步骤 1、下载CPU测试image。agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将CPU资源用满. $ docker pull agileek/cpuset-test 2、观察未开任何应用时的CPU占用情况 [root@elk ~]# mpstat -P ALL 5 10Linux 3.10.0-123.el7.x86_64 (elk) 02...
当docker以桥接的方式启动容器时,容器内部的IP是经过DHCP获取的,例如:172.17.0.8/32,且每重启依次IP都会发生变动。某些特殊的情况下,需要容器内有自己固定的一个内部IP。我的实现方法如下: 1、启动docker容器 # docker run -tid -p 4097:8080 --restar...
生产环境中,我们总是会遇到服务器无法连接外网的情况,这样,如果想安装某个应用,而这个应用依赖的其他类库又特别多,就很痛苦了。这个时候,就需要自己制作个本地的yum库,进行本地安装。本文将以Docker本地安装为例,详细介绍如何制作本地yum库。 1、首...
1、启动centos_sshd镜像 # docker run --net=host -d registry: 5000 /centos-sshd- 222 :v1. 0 /run. sh 这里用的是host模式连接的网络,启动之后即可通过ssh登录到容器内部,装上mysql之后可以直接重启容器来验证是否成功。 2、安装mysql # yum install wg...
让我们回顾一些基础知识: 机器需要一个网络接口来发送和接受数据包,路由表来定义如何到达哪些地址段。这里的网络接口 可以不是物理接口。事实上,每个linxu机器上的lo环回接口(docker 容器中也有)就是一个完全的 linux内核虚拟接口,它直接复制发送缓存...
在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务。比如这么一种 情况:我们需要一个容器来提供mysql的数据库服务,而另外两个容器作为客户端来连接使用mysql数据库服务。下面我们就来...
OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。OpenVPN使用方便,运行性能优秀,支持Solaris、L...
在VPS上部署VPN有一段时间了,但用SSH较多,偶尔用手机连连VPN。最近用的时候遇到一些小问题:断开VPN连接后再次连接的时候就连不上了, 重启IPsec后才能恢复。当时安装的时候图省心,直接用的一键脚本,虽然过程中也遇到些小问题,但后来都谷歌解决了,之后...
虚拟私用网(virtual private network,VPN)是对各种利用公共网络来传输信息的私用的加密网络的统称。在向其用户提供所需要的安全性和网络资源的同时,因为不需要使用专用的网络通信线路,所以VPN网络的建设成本相对要低廉得多。因为VPN在成本方面有着其他解...
今天同事在新服务器上更新svn代码的时候,出现如下错误: Cant convert string from native encoding to UTF-8: svn: 5?\228?\189?\141?\227?\128?\128950?\231?\130?\185?\227?\128?\128?\229?\138?\160?\232?\151?\164?\227?\128?\128?\230?\133?\142?\228?\1...
今天一个朋友说他项目的服务器在对外发包,让我帮忙检查下,要来ssh账号和密码,登录上去一看,原来是tomcat,并且tomcat的bin文件夹下有几个不正常的文件,再看进程,居然搞到服务器/etc下了,还是隐藏文件,删除后再给iptables重新配置了规则.最后告诉他让他自己再...
1 Docker 是什么? -1.1 容器是什么? -2 安装 Docker -2.1 启动 docker 守护进程 -3 ...
使用场景 最近,报告查询系统负载均衡集群相关配置已经完成,两种实现方式分别是基于E...
当你执行 nginx -t 得时候,nginx会去测试你得配置文件得语法,并告诉你配置文件是否...
本文将介绍一些SSL安全性的配置,以此提升网站的安全等级。先给出本博客的SSL配置: s...
Step 1:安装配置JDK 1.下载JDK rpm包 下载地址:http://www.oracle.com/technetwork/...
问题现象: 我们有时候会遇到ssh连接服务器的时候非常慢,经常是要等30秒以上,甚至更...