构建机房运维基础架构(十三): 搭建NTP服务

安装:

yum -y install ntp ntpdate

配置文件:

<pre># ntp.conf: Managed by puppet.
#
# Keep ntpd from panicking in the event of a large clock skew
# when a VM guest is suspended and resumed.
tinker panic 0

# Permit time synchronization with our time source, but do not'
# permit the source to query or modify the service on this system.'
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 0.pool.ntp.org
server 1.pool.ntp.org
server stdtime.gov.hk

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0
fudge 127.127.1.0 stratum 10
restrict 127.127.1.0


# Driftfile.
driftfile /var/lib/ntp/drift

 

其他机器同步时间用:


/usr/sbin/ntpdate $ntp_server_ip &>/dev/null ;clock -w

另外:

1.ntp server 配置文件 和其他机器同步命令 都用Puppet管理。

2.最好要两台NTP 服务器(接入一台交换机),起一个VIP指向这两台机器,并且在接入交换机上打开 源IP、源端口、目的IP、目的端口 的哈希功能(在等价路由基础上),这其实是实现了流量的负载均衡和高可用(具体咨询搞网络的同学)。

 

构建机房运维基础架构(十二): 自建Centos YUM仓库

镜像仓库的搭建

镜像仓库主要做两个,一个是 Centos 官方的仓库,作为日常软件安装,一个是 puppetlabs 的仓库,安装 puppet 使用。

1.创建一个 repo 目录

mkdir /home/repo

2.Centos 官方的仓库是支持 rsync 的,使用如下脚本 yum-repo-update.sh,每天定时就可以同步( rsync 指定 delete 参数删除本地已经不存在镜像中的包,可以避免一些重复包的问题 ):

#!/bin/bash

rsync="rsync -avrt –bwlimit=10240 –delete"
mirror="rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/"

local="/home/repo"
verlist="6 7"
archlist="x86_64"
baselist="os updates extras centosplus contrib"

for ver in $verlist
do
    for arch in $archlist
    do
        for base in $baselist
        do
            remote=$mirror/$ver/$base/$arch/
            mkdir -p $local/centos/$ver/$base/$arch/
            $rsync $remote $local/centos/$ver/$base/$arch/
        done
    done
done

3.puppetlabs 仓库不支持 rsync, 我们使用 yum-utils 中的 reposync来同步,该命名会判断已存在文件而不下载。

先安装 yum-utils:
yum install yum-utils

然后配置脚本,也每天定时跑同步即可(这里注意,reposync 只能同步与宿主机相同版本的软件包,这里我们就只同步 centos6 版本的)

首先要安装一下 puppetlbas 的仓库。

rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm

最终脚本:

#!/bin/bash

rsync="rsync -avrt –bwlimit=10240 –delete"
mirror="rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/"

local="/home/repo"
verlist="6 7"
archlist="x86_64"
baselist="os updates extras centosplus contrib"

for ver in $verlist
do
    for arch in $archlist
    do
        for base in $baselist
        do
            remote=$mirror/$ver/$base/$arch/
            mkdir -p $local/centos/$ver/$base/$arch/
            $rsync $remote $local/centos/$ver/$base/$arch/
        done
    done
done

mkdir -p $local/puppetlabs/6/x86_64
cd $local/puppetlabs/6/x86_64
reposync –repoid=puppetlabs-products

自建仓库的搭建

自建仓库用于公司内部自己打的 rpm 包。

yum -y install createrepo
mkdir -p /home/repo/wandoulabs/6/x86_64/
createrepo /home/repo/wandoulabs/6/x86_64/

入口域名

在服务器上搭建 Nginx,配置文件类似:

server {
listen 80;
server_name mirrors.internal.nosa.me;

access_log logs/mirrors.internal.nosa.access.log;
root /home/repo;

    location / {
        autoindex on;
        index index.html;
    }
}

构建仓库 release 包

将仓库的配置打包成一个 rpm 包,方便管理和升级。

1.repo 文件

[wbase]
name=CentOS-$releasever - Base Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/os/$basearch/
gpgcheck=0
[wupdates]
name=CentOS-$releasever - Updates Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/updates/$basearch/
gpgcheck=0

[wextras]
name=CentOS-$releasever - Extras Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/extras/$basearch/
gpgcheck=0

[wcentosplus]
name=CentOS-$releasever - Plus Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/centosplus/$basearch/
gpgcheck=0
enabled=0

[wcontrib]
name=CentOS-$releasever - Contrib Wandoulabs
baseurl=http://mirrors.internal.nosa.me/centos/$releasever/contrib/$basearch/
gpgcheck=0
enabled=0

[puppetlabs-products]
name=CentOS-$releasever - Puppetlabs Wandoulabs
baseurl=http://mirrors.internal.nosa.me/puppetlabs/$releasever/$basearch/puppetlabs-products
gpgcheck=0

[epel]
name=CentOS-$releasever - EPEL Wandoulabs
baseurl=http://mirrors.internal.nosa.me/epel/$releasever/$basearch/epel
gpgcheck=0

[wandoulabs]
name=CentOS-$releasesever - Wandoulabs
baseurl=http://mirrors.internal.nosa.me/wandoulabs/$releasever/$basearch/
gpgcheck=0

2.spec 文件

Summary: yum repository
Name: wandoulabs-release
Version: 0.0.13
Release: 1.el6
License: GPL 2 license

%description
This is the repository package

%prep
cp -rf $RPM_SOURCE_DIR/wandoulabs-release .
%build

%install
mkdir -p %{buildroot}
mkdir -p %{buildroot}/etc/yum.repos.d/
mkdir -p %{buildroot}/etc/pki/rpm-gpg/wandoulabs/
cp wandoulabs-release/wandoulabs.repo %{buildroot}/etc/yum.repos.d/wandoulabs.repo

%preun

%files
/etc/yum.repos.d/wandoulabs.repo

3.使用 rpmbuild -bb 打包,然后把 rpm 放入自建仓库中。


使用自建仓库

1.把现有 repo 文件删除

rm /etc/yum.repo.d/*

2.安装自建仓库的 rpm 包。

3.清理环境( yum clean all )后就可以正常使用


自建仓库自动化管理

在系统自动化安装时,会把这个 wandoulabs-relase 包安装上,之后该包会进入 puppet 的管理范围,保持最新的 wandoulabs-release 包。

如果有新的仓库需要添加, 同步完仓库后,将新的 mirror 仓库路径加入配置,打包一个新版本的 wandoulabs-release 包,放入自建仓库中,各服务器会自动更新仓库包。