分类 默认分类 下的文章

维基百科 Filesystem Hierarchy Standard 有一段介绍 /run 和 /var/run 目录的说明

Modern Linux distributions include a /run directory as a temporary filesystem (tmpfs) which stores volatile runtime data, following the FHS version 3.0. According to the FHS version 2.3, such data were stored in /var/run but this was a problem in some cases because this directory is not always available at early boot. As a result, these programs have had to resort to trickery, such as using /dev/.udev, /dev/.mdadm, /dev/.systemd or /dev/.mount directories, even though the device directory isn't intended for such data.[23] Among other advantages, this makes the system easier to use normally with the root filesystem mounted read-only. For example, below are the changes Debian made in its 2013 Wheezy release:[24]

/run 目录是一个临时文件系统, 存储是启动以来的信息.当系统重启时,这个目录下的文件应该被删掉或清除.如果你的系统上有/var/run目录,应该让它指向run.

- 阅读剩余部分 -

CentOS yum工具如果开启了fastmirror插件,会自动查找最近的源以供使用,有时候有更好的源供选择,希望指向固定的epel源.

禁用fastmirror插件

编辑

/etc/yum/pluginconf.d/fastestmirror.conf 

将内容修改为:

# 1 - 开启
# 0 - 关闭
enabled = 0

修改 Base 仓库源

国内目前镜像源比较丰富了,各个云厂商大都提供公共的镜像源对外使用.比如腾讯/网易/阿里等等,根据自己的网络条件和喜欢选择即可, 个人一般倾向使用清华的源, 开源镜像仓库比较丰富.
在清华的镜像站点上对各个源的使用皆有帮助信息, 参考网址:https://mirrors.tuna.tsinghua.edu.cn

- 阅读剩余部分 -

由于安全限制, 我们需要访问远端大量的服务地址和不同端口,因此需要端口转发.但为每个端口分别创建本地端口又异常麻烦, 所以希望尽量简化这个过程.动态端口转发绑定了一个本地端口,而目标地址:目标端口则是不固定的.

ssh该功能是由 DynamicForward 在控制,可以通过命令行直接指定, 也可以通过 ~/.ssh/ssh_config 来配置.

命令行直接配置:

ssh -D localhost:5963 root@192.168.56.10

- 阅读剩余部分 -

rdesktop是一个开源软件,使您可以使用RDP远程桌面协议从Linux计算机连接和管理远程Windows桌面.要使rdesktop能够连接到Windows计算机,需要开启相关Windows配置.

  • 防火墙打开 RDP 服务端口 3389
  • 开启Windows的远程桌面
  • 用户启用密码登陆

在Linux上安装 rdesktop:

  • Centos
yum -y install rdesktop
  • Debian/Ubuntu
apt -y install rdesktop
  • Gentoo
emerge -a net-misc/rdesktop

- 阅读剩余部分 -

HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备完善的扩展能力, 性能和稳定性都非常好。

HAProxy常用功能:

  • 负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法
  • 健康检查:支持TCP和HTTP两种健康检查模式
  • 会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持
  • SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
  • HTTP请求重写与重定向
  • 监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。

- 阅读剩余部分 -

openssh 从7.2版本开始,添加了对PorxyJump的支持,PorxyJump选项主要用于多级跳板机的支持

Changes since OpenSSH 7.2
=========================

New Features
------------

 * ssh(1): Add a ProxyJump option and corresponding -J command-line
   flag to allow simplified indirection through a one or more SSH
   bastions or "jump hosts".

跳板机主要是因为安全管控性要求以及安全审计的需求,以便将网络环境隔离同时将所有到机房的操作行为记录下来.

- 阅读剩余部分 -

我们前面几节已经详细介绍了基于 UbuntuCentOS 构建内存镜像的方案,其中 ~/work/initramfs/init 脚本内容大致如下:

#!/bin/busybox sh

# Dump to sh if something fails
error() {
    echo "Jumping into the shell..."
    setsid cttyhack sh
}

# Populate /bin with binaries from busybox
/bin/busybox --install /bin

mkdir -p /proc
mount -t proc proc /proc

mkdir -p /sys
mount -t sysfs sysfs /sys

mkdir -p /sys/dev
mkdir -p /var/run
mkdir -p /dev

mkdir -p /dev/pts
mount -t devpts devpts /dev/pts

# Populate /dev
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

echo "mount rootfs... "
mkdir -p /newroot
mount -t tmpfs -o size=80% tmpfs /newroot || error

xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot || error

mount --move /sys /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev /newroot/dev

exec switch_root /newroot /sbin/init || error

- 阅读剩余部分 -

在前面的文章中, 我们已经提到, initrd 本身就是精简版的根盘文件系统, 主要目的是用于内核启动后 OS 环境的初始化, 比如你是 Soft Raid,需要在这个时候读取 /etc/fstab 文件,比如根盘文件在特定的 Raid 设备卷中的分区上, 需要预加载指定 Raid 驱动等等.总之这个环境主要用于真正用户 OS 启动之前的准备.

通常在各个发行版本都有各自的 initrd 的构建工具,各自的目的呢, 也仅限于我们上述提到的功能. 而我们是需要将整个 OS 塞到这个内存镜像中,所以稍微还是有区别,调研了下一些业界的实现, 这里的几个链接供参考:

上述链接可以看到, 一般是使用 https://virt-manager.org/和http://libguestfs.org/ 这两个项目的工具来构建镜像.可以尝试下这个方法, 完全可行, 但是有个问题是这个流程真的太长了, 比如要按上述流程构建的话, 需要用virt-install完整安装一遍目标 OS
, 继续用virt-sysprep对镜像做一遍清理, 将生成的镜像导入到 virt-builder, 继续在 KVM 虚拟机中配置一遍 OS 默认信息, 然后就可以将镜像更新到 virt-builder 基础镜像中, 然后拿到其他地方使用, 比如 Ramdisk boot/Vagrant/OpenStack/Docker中使用.

- 阅读剩余部分 -

上一篇文章 PXE 自动化装机技术回顾 我们详细讨论了下, 标准 PXE 使用流程的一些优缺点.对于现今机房数量的大幅度增加, 物理机数量以及类型的增加, 多样化需求的叠加, 尤其是国内还有大量对裸金属服务的依赖, 都希望将传统的安装过程能平台化/模块化/自动化,以满足不断丰富的业务需求, 满足对资源的交付更加高效/可靠/稳定要求, 以及同时减少整体持续运营的成本, 降低研发人员参与的强度.

其实整个传统的PXE装机过程, 偏向串行化, 流程化的, 如果我们能将大部分内容变成服务化,由业务调度提供执行任务, 要求所有任务有足够原子化的粒度,比如做 Raid, 写镜像, 配置网卡等等, 真正的装机模块负责对任务进行执行, 所有任务支持编排, 提供并行/串行机制, 实时反馈,偶发异常自动重试,系统异常自动提醒.

大多厂商都开始使用 OpenStack Ironic 来解决上述问题, Ironic 架构图如下:

Ironic Arch

- 阅读剩余部分 -

到目前为止, 我们已经按技术标准实现了 Debian/Ubuntu 系列 OS 基于 preseeding 技术的自动化装机流程.其实 CentOS 的 PXE 环境构建也一样,基本是把 CentOS-7-x86_64-DVD-1810.iso 标准镜像中 /images/pxeboot 目录下的 vmlinuz/initrd.img 拷贝到 /var/lib/tftp 下. pxelinux.0 引导程序文件不像 Debian\Ubuntu 在版本 iso 镜像中管理, 而是在 syslinux 包中, 当然 syslinux 包一定是在标准镜像中, 需要单独解开这个包或者是在宿主机器上安装该包然后将内容再拷贝出来, 另外还有一些依赖的内容比如 boot.msg 等等文件还需要标准镜像中拷贝出来, 具体依赖项还需要看你 pxelinux.cfg/default 文件中使用了哪些内容.

- 阅读剩余部分 -