Mesos

Mesos 认证、授权

2017-05-04  本文已影响691人  imsilence

认证、授权

用户: 用于master对framework和slave的认证
角色:

  1. 将framework分类
    在框架注册时,必须指定框架注册的角色信息,在资源分配是作为框架的属性进行影响分配结果
  2. 将用户分类
    用于定义某(些)用户对框架的操作信息, 比如注册、下线等
  3. 将资源分类
    在slave上配置, 用于指定资源只能由某角色使用
    操作: 主要用于限制framework的注册(register_frameworks),运行(run_tasks),下线(shutdown_frameworks)三种操作对应
    框架名称: 在框架向master注册时设置其名称

任务执行用户: 在slave上执行任务的系统用户

使用:

master启动:

mesos-master --ip=192.168.56.101 --zk=zk://localhost:2181/mesos --quorum=1 --work_dir=/var/lib/mesos --log_dir=/var/log/mesos --hostname=192.168.56.101 --cluster=mesos --authenticate=true --authenticate_slaves=true --authenticators=crammd5 --credentials=/root/run/credentials --roles=marathon_role,chronos_role --acls=/root/run/acls.json

参数说明:

  1. --authenticators=crammd5
    设置认证方式

  2. --credentials=/root/run/credentials
    设置用户名密码
    文件内容:

    user1 password1
    user2 password2
    marathon_user marathon_password
    chronos_user chronos_password
    framework_user framework_password
    

    每行对应一个用户名和密码信息

  3. --authenticate=true
    设置在framewrok注册时对用户进行认证

  4. --authenticate_slaves=true
    设置在slave注册时对用户进行认证

  5. --roles=marathon_role,chronos_role
    设置角色列表

  6. --acls=/root/run/acls.json
    设置访问权限
    文件内容:

{   
    "permissive" : false,
    "register_frameworks" : [
        {
            "principals" : {
                "values" : ["marathon_user"]
            },
            "roles" : {
                "values" : ["marathon_role"]
            }
        },
        {
            "principals" : {
                "values" : ["chronos_user"]
            },
            "roles" : {
                "values" : ["chronos_role"]
            }
        }
    ],
    "run_tasks" : [
        {
            "principals" : {
                "values" : ["marathon_user", "chronos_user"]
            },
            "users" : {
                "values" : ["root"]
            }
        }
    ],
    "shutdown_frameworks" : [
        {
            "principals": {
                "values": ["framework_user"]
            },
            "framework_principals": {
                "type": "ANY"
            }
        }
    ]
}

解释:

  1. 框架只能由用户marathon_user以marathon_role角色或用户chronos_user以chronos_role角色像master发起注册
  2. 框架只能使用户只能使用marathon_user和chronos_user且以root系统用户运行任务
  3. 只允许framework_user通过restapi关闭所有的框架下线
  4. 在json配置中有value有两种设置可以是values或者type,values对应具体的用户名、角色、框架名称、系统用户。type对应范式匹配可设置为NONE或ANY,分别表示没有任何值和所有值

slave启动

mesos-slave --ip=192.168.56.102 --hostname=192.168.56.102 --master=zk://192.168.56.101:2181/mesos --containerizers=docker,mesos --log_dir=/var/log/mesos --work_dir=/var/lib/mesos --authenticatee=crammd5 --credential=credential

参数说明:

  1. --authenticatee=crammd5
    设置认证方式
  2. --credential=credential
    设置用户名密码信息
    文件内容:
    user2 password2
    

框架启动需要指定参数(以marathon, chronos为例):
marathon:

./start --master zk://localhost:2181/mesos --zk zk://localhost:2181/marathon --hostname 192.168.56.101 --framework_name marathon --mesos_user root --mesos_role marathon_role --mesos_authentication_principal marathon_user --mesos_authentication_secret_file /root/marathon-0.10.0/bin/mesos_secret
  1. --framework_name marathon
    设置框架名称
  2. --mesos_user root
    设置框架创建任务在slave上运行的系统用户
  3. --mesos_role marathon_role
    设置框架的角色
  4. --mesos_authentication_principal marathon_user
    设置框架的认证用户名
  5. --mesos_authentication_secret_file /root/marathon-0.10.0/bin/mesos_secret
    设置框架的认证用户密码,需要注意文件中只能包含名称,不能包含换行字符和空格

chronos:

./start-chronos.bash --master zk://localhost:2181/mesos --zk_hosts zk://localhost:2181 --http_port 8081 --mesos_framework_name chronos --user root --mesos_role chronos_role --mesos_authentication_principal chronos_user --mesos_authentication_secret_file /root/chronos-2.4.0/bin/mesos_secret
  1. --mesos_framework_name chronos
    设置框架名称
  2. --user root
    设置框架创建的任务在slave上运行的系统用户
  3. --mesos_role chronos_role
    设置框架角色
  4. --mesos_authentication_principal chronos_user
    设置框架的认证用户名
  5. --mesos_authentication_secret_file /root/chronos-2.4.0/bin/mesos_secret
    设置框架的认证密码,需要注意文件中只能包含名称,不能包含换行字符和空格

使用curl下线框架的示例

curl -XPOST "http://192.168.56.101:5050/master/teardown" --login-options AUTH=CRAM-MD5 --user "framework_user:framework_password" -d "frameworkId=20151019-154324-1698212032-5050-8277-0000" -v
上一篇 下一篇

猜你喜欢

热点阅读