随着Docker容器的成熟、流行,CoreOS应运而生。
1、CoreOS浅识
个人把CoreOS定位为能提供最轻量微服务集群的操作平台,其本质是提供最小必要功能的具备容器功能的Linux操作系统。
CoreOS不挑运行环境,各大主流云平台、虚拟机、裸机上都可以跑。也就是说它能屈能伸,可以依附流行平台, 也可以不依赖任何平台独立运作,个人更看中后一点,也就是其在裸机上的使用,认为可大幅提高单台或集群服务器的容器服务能力。对生产环境而言,亦看好其作为最终替代CentOS或Ubuntu的Docker宿主操作系统的前景。
图一、官方的图例。
上面图例。很好的说明了右边部分CoreOS集群虚拟出一套包含2个前端负载均衡及6个后端应用的系统,并涉及CoreOS最重要的组件etcd、systemd、Fleet和其上的容器。
本次打算绕开在云平台上安装或通过Vagrant本地模拟,直接在VirtualBox上模拟真实服务器,用官方.iso文件像安装其他操作系统一样,这样基本和物理安装区别不大,体验更加直接。
本次先从模拟单机安装开始,集群模拟放在下一步。
2、安装准备
1、安装文件及硬件准备
CoreOS的安装和其他Linux 略有区别,从官方下载的.iso文件其实只是一张LiveCD,所以为方便安装最好提供一台web服务器, 主要用于系统及配置模板下载。
在VirtualBox上虚拟出两台服务器,一台安装web服务器:ubuntu+nginx(安装不做介绍),另一台为x64Linux主机安装CoreOS:内存1G,双网卡(一张NAT用于联外网,一张host only 用于连接web服务器),载入官网下载.iso文件。
2、准备随后CoreOS sudo用户/密码:
# On Debian/Ubuntu (via the package "whois") #mkpasswd --method=SHA-512 --rounds=4096
按官网建议在web 服务器上用mkpasswd 为特定用户生成高加密位数的密码 ,保存。
我的例子:
用户名:steven
密码:$6$rounds=4096$YDy3GeHwf1F$NSFBqUVapiEdycONHJkFtL7flfghfFH5fU1rH1uI4acdtgKkkSIUI2Y2abTy4bzbTffXfw3SvP/fpyGpzNw3Z/
3、准备CoreOS配置模板
下面就来看核心的cloud-config.yaml 文件庐山真面目:
#cloud-config hostname: coreos1 coreos: etcd: addr: $private_ipv4:4001 peer-addr: $private_ipv4:7001 units: - name: etcd.service command: start - name: fleet.service command: start - name: static.network content: | [Match] Name=enp0s8 [Network] Address=192.168.66.9/24 #Gateway=192.168.66.100 #DNS=8.8.8.8 #DNS=8.8.4.4 users: - name: "steven" passwd: "$6$rounds=4096$YDy3GeHwf1F$NSFBqUVapiEdycONHJkFtL7flfghfFH5fU1rH1uI4acdtgKkkSIUI2Y2abTy4bzbTffXfw3SvP/fpyGpzNw3Z/" groups: - "sudo" - "docker"这个cloud-config.yaml还是很好理解的,主要就是设置主机名、给网卡配上IP地址,添加管理用户,加入sudo和docker组。 配置模板真的是CoreOS的关键,因为它是双系统的,而且其中一个Active系统还是只读的,后面修改保存配置都很麻烦,所以如果用于生产环境,配置文件实现规划周全就尤为关键了。 准备好模板文件,放到web服务器上就绪。 4、准备系统文件(可选) 在web服务器上下载官网系统packages,放到web 根目录下。
$ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_iso_image.iso $ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_image.bin.bz2 $ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_image.bin.bz2.sig
3、安装实战
1、用官网.iso文件启动CoreOS虚拟机:
$sudo -i
以root 进入本地CoreOS系统。
#cd /etc/systemd
进入/etc/systemd ,这个目录现在是可读写的,我把它作为后续的工作目录。
2、(可选)修改IP地址。
#cd /etc/systemd/network #sudo vi static.network //添加网卡配置 [Match] Name=enp0s3 [Network] Address=192.168.88.71/24 Gateway=192.168.88.1 DNS=223.5.5.5 DNS=8.8.8.8 #systemctl restart systemd-networkd //网卡配置生效
因为本次我已虚拟双网卡,其中enp0s3为NAT DHCP自动获得,所以不需要手工配置,也就省去了本步骤。
3、安装到硬盘
前面已经准备了另一台虚拟机,提供web服务,主要提供系统文件和初始配置文件,这是可选的,主要是方便安装,省去外网下载或手工敲击配置文件的麻烦。
3.1 (可选) 修改 /bin/coreos-install 文件里面 BASE_URL="http://<本地web服务器地址>/" ,免去外网下载。
3.2 (可选) 下载配置文件:
#wget http://192.168.88.1/cloud-config.yaml //我的实例,下载到/etc/systemd下。
3.3 安装到硬盘
按需修改cloud-config.yaml文件,保存。
#coreos-install -d /dev/sda -c cloud-config.yaml
-d /dev/sda表示安装到硬盘分区/dev/sda
-c cloud-config.yaml 表示应用cloud-config.yaml 配置文件初始化系统参数。
我没修改coreos-install脚本,所以安装过程会从官网下载200多M的最新稳定版系统。
3.4 去除.iso文件(退出光盘) ,重启CoreOS,进入系统
$docker info
Everything is OK!
4、后续
本次已安装一台功能完备的容器主机,可以开始CoreOS之旅了,后面将通过模拟三台CoreOS主机体验集群功能。