命令行部署#

前提#

在开始前,请配置yum源,使用root用户登陆kdc1,进行基础配置:

ssh root@192.168.1.11

从yum源所在机器获取repo文件:

scp oushu@192.168.1.10:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo

追加yum源所在机器信息到/etc/hosts文件

安装lava命令行管理工具:

yum clean all
yum makecache
yum install -y lava

创建一个kdchostfile文件,包含cluster中的所有机器:

touch ~/kdchostfile

编辑kdchostfile文件内容如下(集群各机器的hostname):

kdc1
kdc2

和集群内其他机器交换公钥:

lava ssh-exkeys -f ~/kdchostfile -p ********

将repo文件分发给集群内其他机器:

lava scp -f ~/kdchostfile /etc/yum.repos.d/oushu.repo =:/etc/yum.repos.d

注意:所有安装Kerberos的机器hostname必须为全小写,否则会有问题

安装#

执行下列命令安装Kerberos:

lava ssh -f ~/kdchostfile -e "yum install -y krb5-libs krb5-workstation krb5-server"

配置#

文档中默认时候OUSHU.COM作为域名,如果需要修改域名,替换所有配置中的OUSHU.COM。

在 /var/kerberos/krb5kdc文件夹修改kdc.conf

[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
 
[realms]
OUSHU.COM = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

如果需要修改kdc启动端口,则修改kdc_ports和kdc_tcp_ports。

在 /etc文件夹修改krb5.conf

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
 
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
[libdefaults]
 default_realm = OUSHU.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = true
 clockskew = 120
 udp_preference_limit = 1
[realms]
 OUSHU.COM = {
  kdc = 192.168.1.11
  kdc = 192.168.1.12
  admin_server = 192.168.1.11
  admin_server = 192.168.1.12
 }
 
[domain_realm]
 .oushu.com = OUSHU.COM
 oushu.com = OUSHU.COM

如果需要修改log配置,则修改logging标签下的字段。

节点ip需要根据实际情况修改,域名配置需要和上一个域名修改匹配。

在 /var/kerberos/krb5kdc文件夹修改kadm5.acl

*/admin@OUSHU.COM  *

通过正则匹配管理员principal,域名配置需要和上一个域名修改匹配。

分发三个配置文件:

lava scp -h kdc2 /var/kerberos/krb5kdc/kdc.conf =:/var/kerberos/krb5kdc/kdc.conf
lava scp -h kdc2 /etc/krb5.conf =:/etc/krb5.conf
lava scp -h kdc2 /var/kerberos/krb5kdc/kadm5.acl =:/var/kerberos/krb5kdc/kadm5.acl

启动#

在kdc master节点kdc1创建kdc数据库(这一步需要创建密码):

kdb5_util create -s -r OUSHU.COM

在kdc master节点kdc1启动kdc:

systemctl start kadmin krb5kdc

在kdc master节点kdc1创建同步用户:

kadmin.local addprinc -randkey host/kdc1
kadmin.local ktadd host/kdc1
kadmin.local addprinc -randkey host/kdc2
kadmin.local ktadd host/kdc2
lava scp -h kdc2 /etc/krb5.keytab =:/etc/krb5.keytab
lava scp -h kdc2 /var/kerberos/krb5kdc/.k5.OUSHU.COM =:/var/kerberos/krb5kdc/.k5.OUSHU.COM

在kdc standby节点kdc2开启同步进程:

lava ssh -h kdc2 -e "sudo echo -e \"host/kdc1@OUSHU.COM\" | tee /var/kerberos/krb5kdc/kpropd.acl"
lava ssh -h kdc2 -e "sudo echo -e \"host/kdc2@OUSHU.COM\" | tee -a /var/kerberos/krb5kdc/kpropd.acl"
lava ssh -h kdc2 -e "sudo systemctl start kprop"

在kdc master节点kdc1执行同步:

sudo kdb5_util dump /var/kerberos/krb5kdc/master.dump
sudo kprop -f /var/kerberos/krb5kdc/master.dump -d -P 754 kdc2

在kdc standby节点kdc2启动kdc:

lava ssh -h kdc2 -e "sudo systemctl start krb5kdc"

验证安装结果#

查询principal列表

在kdc master节点kdc1执行:

sudo kadmin.local listprincs

正常列出现有principal,则证明部署完成。

使用#

常用功能

命令

启动节点

sudo systemctl start krb5kdc

停止节点

sudo systemctl stop krb5kdc

注册到skylab(可选)#

Kerberos将要安装的机器需要通过机器管理添加到skylab中,如果您尚未添加,请参考注册机器

在kdc1节点修改/usr/local/oushu/lava/conf配置server.json,替换localhost为skylab的服务器ip,具体skylab的基础服务lava安装步骤请参考:lava安装

{
  "server": "localhost:1612",
  "admin": "localhost:1652"
}

创建一个request文件,包含kdc cluster信息:

touch ~/kdc-register.json

编辑json文件内容如下:

{
  "data": {
    "name": "kdcserver", 
    "group_roles": [
      {
        "role": "kdc.master",
        "cluster_name": "kdc",
        "group_name": "kdcmaster",
        "machines": [
          {
            "id": 1,
            "name": "kdc1",
            "subnet": "lava",
            "data_ip": "192.168.1.11",
            "manage_ip": "192.168.1.11",
            "assist_port": 1622,
            "ssh_port": 22
          }
        ]
      },
      {
        "role": "kdc.standby",
        "cluster_name": "kdc",
        "group_name": "kdcstandby",
        "machines": [
          {
            "id": 2,
            "name": "kdc2",
            "subnet": "lava",
            "data_ip": "192.168.1.12",
            "manage_ip": "192.168.1.12",
            "assist_port": 1622,
            "ssh_port": 22
          }
        ]
      }
    ]
  }
}

配置文件说明,整个json分为3部分:

  • 第一部分name,为集群名称,个性化填写。

  • 第二部分为group_roles,对于kdc为2个角色,kdc.master和kdc.standby,不可修改。

  • 第三部分,为每个角色添加机器,需要添加的机器信息可以通过下面的方式获得。

在平台基础组件lava所安装的机器执行(端口和用户名按照lava配置修改):

psql lavaadmin -p 4432 -U oushu -c "select m.id,m.name,s.name as subnet,m.private_ip as data_ip,m.public_ip as manage_ip,m.assist_port,m.ssh_port from machine as m,subnet as s where m.subnet_id=s.id;"

获取到所需的机器信息,根据服务角色对应的节点,将机器信息添加到machines数组中。

在kdc1节点调用lava命令注册集群:

lava login -u oushu -p Oushu6@China
lava onprem-register service -s KDC -f ~/kdc-register.json

如果返回值为:

Add service by self success

则表示注册成功,如果有错误信息,请根据错误信息处理。

例如skylab部署在192.168.1.10,访问

http://192.168.1.10:3000/main/Deploy/kdc

从页面登录后,在自动部署模块对应服务中可以查看到新添加的集群,同时列表中会实时监控kdc进程在机器上的状态。