GROUP_BY operator
GROUP_BY can be used to distribute tasks evenly across racks or datacenters for high
availability.
$curl -v -X POST http://192.168.100.30:8080/v2/apps \
-H Content-Type:application/json -d '{
"id":"dataman",
"container": {
"type": "DOCKER",
"docker": {
"image": "192.168.100.13:5000/fchen/mynginx",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 80, "hostPort": 0, "protocol": "tcp"
}]
}
},
"constraints": [["rack_id", "GROUP_BY"]],
"cmd": "/usr/sbin/nginx -c /etc/nginx/nginx.conf",
"cpus": 0.1,
"mem": 128.0,
"instances": 6
}'
GROUP_BY帮我们将instance均匀的分布到不同的机架上,保证了高可用性。可以看到rack1
和rack2上的instance个数均为3个。
LIKE operator
LIKE accepts a regular expression as parameter, and allows you to run your tasks only on the slaves whose field values match the regular expression.
curl -v -X POST http://192.168.100.30:8080/v2/apps \
-H Content-Type:application/json -d '{
"id":"dataman",
"container": {
"type": "DOCKER",
"docker": {
"image": "192.168.100.13:5000/fchen/mynginx",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 80, "hostPort": 0, "protocol": "tcp"
}]
}
},
"constraints": [["rack_id", "LIKE", "rack-[1-2]"]],
"cmd": "/usr/sbin/nginx -c /etc/nginx/nginx.conf",
"cpus": 0.1,
"mem": 128.0,
"instances": 6
}'
LIKE操作可以将我们的instance发布到我们希望的slave上,匹配正则表达式。
注意:LIKE操作必须带上parameter。
UNLIKE operator
Just like LIKE operator, but only run tasks on slaves whose field values don’t match the regular expression.
curl -v -X POST http://192.168.100.30:8080/v2/apps \
-H Content-Type:application/json -d '{
"id":"dataman",
"container": {
"type": "DOCKER",
"docker": {
"image": "192.168.100.13:5000/fchen/mynginx",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 80, "hostPort": 0, "protocol": "tcp"
}]
}
},
"constraints": [["rack_id", "UNLIKE", "rack-[2,3]"]],
"cmd": "/usr/sbin/nginx -c /etc/nginx/nginx.conf",
"cpus": 0.1,
"mem": 128.0,
"instances": 6
}'
同LIKE操作,UNLIKE不将instance发布到匹配的slave上,参数匹配正则表达式。