6 30
Kubernetes集群搭建

本文主要纪录Ubuntu环境下搭建Kubernetes集群的相关步骤,包括网络环境、docker配置、k8s安装。这里把安装过程中遇到的问题以及解决方法也纪录下来,然后分享出来

本文操作环境的默认用户为 root

一、环境准备

为了快速搭建,我选用了三台ubuntu的虚拟机,初步规划如下:

操作系统 服务器IP 节点名称 角色
Ubuntu 18.04 192.168.159.101 kmaster master节点
Ubuntu 18.04 192.168.159.102 knode-1 worker节点
Ubuntu 18.04 192.168.159.103 knode-2 worker节点
Ubuntu 18.04 192.168.159.104 knode-3 worker节点
3 22
Nginx对网段内ip的连接数限流配置

Nginx中的所谓连接数限制,其实是tcp连接,也就是请求方通过三次握手后成功建立的连接状态。Nginx一般为我们提供了 ngx_http_limit_conn_module 模块来提供限制连接功能。该模块可以根据定义的键来限制每个键值的连接数,如同一个IP来源的连接数。

ngx_http_limit_conn_module指令解释

Syntax:    limit_conn zone number;
Default:    —
Context:    http, server, location

该指令描述会话状态存储区域。键的状态中保存了当前连接数,键的值可以是特定变量的任何非空值(空值将不会被考虑)。$variable定义键,zone=name定义区域名称。 常见使用例子:

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    location /download/ {
        limit_conn addr 1;
    }

上面例子表示当请求访问 /download/ 时, 同一时刻只能一个请求连接会成功进行资源下载。

网段限制

常见的limit_conn_zone 配置一般设置 $binary_remote_addr 或 $server_name,进行单一ip或主机级的连接数限制。

但有时候我们希望能对某ip网段进行连接数限制,那我们可以这么做:

http {

... ...

    limit_conn_zone $ip_segment zone=network_segment:10m;

    server {
            ... ...
            set $ip_segment $remote_addr;

            if ( $ip_segment ~ ^(\d+)\.(\d+)\.(\d+)\.(\d+) ) {
                set $ip_segment $1.$2.$3;
            }

            location /download/ {
                limit_conn network_segment 10; 
                #limit_rate  200k;
            }

    }
}

这样基本能满足Nginx对网段内所有ip的连接数做统一的连接数限制了。

2 17
分布式系统学习:二阶段提交

CAP理论

在学习分布式的相关知识点前,一定要先掌握CAP定理:

  • C(onsistency) 一致性:分布式环境中,CAP关注的粒度是数据,而不是系统,而数据往往存在于多个副本之中,一致性是指多个副本之间,在同一时刻能否有同样的值(内容和组织上的数据)

  • A(vailability) 可用性:系统提供的服务必须一直处于可用的状态。即使集群中一部分节点故障。换句话说就是用户在容忍的时间范围内返回用户期望的结果

  • P(artition-resiliene) 分区容错性:系统在遇到节点故障,或者网络分区时(断网),依然能对外提供一致性和可用性的服务,在分布式系统架构中,通常由多个节点组成,由于节点通讯往往依赖网络,网络在现实中不是100%可靠的,所以分区容错是分布式的一个 “最基本要求” ,所以一般我们常见的CAP架构只有 AP和CP。

2 16
Linux内核学习:虚拟文件系统

Linux的成功因素之一是它具有与其它操作系统和谐共存的能力,其中代表作之一就是虚拟文件系统(VFS)。

VFS的思想是把不同类型文件的共同信息放入内核,具体思路是通过Linux在用户进程(或C库)和文件系统之间引入了一个抽象层,该抽象层称之为虚拟文件系统(VFS)。

vfs arch

VFS的任务主要是提供一种操作文件、目录以及其他对象的统一方法还有它必须能够与各种方法给出的具体文件系统实现达成妥协。

后一页