2020-09-24 20:10:31    26    0    0

一、PXE介绍

  PXE(Pre-boot Execution Environment)叫做预启动执行环境,它提供了一个通过网络启动操作系统或者启动安装器anaconda的环境。PXE的代码是内嵌在网卡内芯片上的。安装的第一步是加载一个启动管理器(boot loader)来加载内核和安装器(anaconda)。

1、anaconda
  是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。

2、PXE启动流程

  • a. 网卡(NIC)申请DHCP信息,获得有效的客户端IP地址;
  • b. 同时DHCP服务器提供bootloader nametftp服务器IP地址;
  • c. NICtftp的地址去获取bootloader,然后BIOS执行bootloader,通常bootloader叫做pxelinux.0;
  • d. Bootloader再次用tftp去找kickstart配置文件ks.cfg,按配置文件内容运行。
  • e. 启动anconda安装器,由于ks.cfg中定义了安装镜像的位置以及安装器所需的必要信息,所以安装器就能在没有人为干预的情况下进行安装。
2020-09-24 10:45:15    22    0    0

如果某一个项目依赖其他项目,可以将依赖的项目以子模块的方式添加到当前项目里面,通常情况下,子模块以只读的方式来使用(也可以对子模块做修改提交)。

一. 添加子模块

  1. $ 把项目programb添加为当前项目(programa)的子模块,本地名字也叫programb,在third_party目录下,-b指定programbmaster分支
  2. git submodule add -b business git@1.1.1.1:yuchaoshui/programb.git third_party/programb
  3. $ 如果忘记指定-b参数,可以修改指定分支
  4. git config -f .gitmodules submodule.third_party/programb.branch business
  5. $ 提交在programa里面
  6. git commit -m "add submodule third_party/programb"
2020-09-19 18:13:58    20    0    0

使用go mod来管理项目,完全忽略掉GOPATH的存在,测试版本go1.15

一. 启用GO111MODULE并设置代理

  1. $ go env -w GO111MODULE=on
  2. $ go env -w GOPROXY=https://goproxy.cn,direct
  3. # 设置完成以后查看
  4. $ go env
2020-08-03 12:54:44    41    0    0

流量控制(tc)是一个非常有用的Linux实用程序,使您能够配置内核数据包调度程序。
tc可以模拟UDP或TCP应用程序的数据包延迟和丢失,或者限制特定服务的带宽等等场景。

命令安装

  1. # Debain和Redhat系列的系统安装iproute包即可
  2. sudo apt-get install -y iproute
  3. sudo yum install -y iproute


控制网络延迟(双向)

这里的延迟控制是双向的,即当前主机到其他主机延迟,其他主机到当前主机延迟。

2020-07-26 22:27:33    80    0    0

数据链路层

常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(以太网V2标准),另一种是IEEE的802.3标准。这里介绍的是使用的最多的以太网V2的MAC帧格式。

  • 一个MAC帧的大小最小为64字节。
2020-07-26 17:30:58    45    0    0

TCP的连接建立

下图画出了TCP的建立连接的过程。假定主机A运行的是TCP客户程序,而B运行的是TCP服务器程序。最初两端的TCP进程都处于CLOSED状态。请注意,A主动打开连接,而B被动打开连接。

连接过程如下:

2020-07-20 01:47:08    65    0    0

尽管Elasticsearch需要很少的配置,但是在上线之前,还是需要考虑许多设置的。

一. 系统配置

查看常见系统配置

  1. # 查看memory_lock
  2. GET _nodes?filter_path=**.mlockall
  3. # 查看系统描述符
  4. GET _nodes/stats/process?filter_path=**.max_file_descriptors


1.1 max number of open files

  • ulimit
    ulimit 可以临时修改,重启失效。
2020-07-20 01:44:45    76    0    0

一. 系统安装

1.1 系统配置

  • 方法一:选择安装套件时选择Virtuallization Host,右边选择上常用的工具包即可。
  • 方法二:如果在装系统时没有选择Virtuallization Host,则按如下步骤安装:
  1. dnf module install virt
  2. dnf install virt-install virt-viewer
  3. # 环境检查是否满足要求
  4. virt-host-validate
  5. systemctl start libvirtd.service
  6. systemctl enable libvirtd.service
  7. systemctl status libvirtd.service
  • 安装完成后配置网卡的静态IP地址。
  1. vim /etc/sysconfig/network-scripts/ifcfg-eno4
  2. nmcli c reload
Docker    2020-07-18 01:12:45    40    0    0

创建网络空间

Containers are just Linux cgroups and namespaces.

如果在网络上搜索什么是容器,那么通常会达到如上的结果,那么我们就从网络命名空间说起。

在第一个终端中我们启动了一个监听在8080端口的服务,其实我们是使用了主机的网络命名空间(host network namespace),有时又叫root or global network namespace,为了不让端口冲突,我们创建一个新的网络空间给第三个终端使用。

  1. sudo ip netns add netns_dustin


使用新创建的网络空间启动http server服务,而不是host network namespace,现在问题来了,如何访问这个新的网络命名空间呢。

awk    2020-07-12 14:49:34    31    0    0

一. 简要概览

  • 问什么awk使用单引号
    (awk程序使用单引号包围)这个规定可以防止程序中的字符 (例如 $) 被 shell 解释, 也可以让程序的长度多于一行.

  • 程序格式
    动作的左花括号必须与它的模式在同一行; 而剩下的部分, 包括右花括号, 则可以出现在下
    面几行.
    空行会被忽略; 它们可以插入在语句之前或之后, 用于提高程序的可读性. 空格与制表符可
    以出现在运算符与操作数的周围, 同样也是为了提高可读性.

二. 模式匹配

2.1 模式汇总

  1. BEGIN{ statements}
    在输入被读取之前, statements 执行一次.

  2. END{ statements}
    当所有输入被读取完毕之后, statements 执行一次.