Rancher is an open source software platform that implements a purpose-built infrastructure for running Docker containers in production. As in production, there are requirements to create new requirements in infrastructure services such as networking, storage, load balancer, security, service discovery, and resource management.
Cattle
Cattle is the orchestration engine that powers Rancher. Its primary role is meta data management and orchestration of external systems. Cattle doesn’t do real work, but instead delegate to other components (agents) to do the actual work.
Cattle Components
Following are the key components in Cattle:
- Process Engine
- Configuration Management (meta-data)
- Resources & Agents
Process Engine
Cattle defines a process engine which define and control the actions and state for different resources. It also control and log the transitioning between different states. The engine also has an option to define the process as idempotent. If the option is turned on, the process will be run twice. the engine will check if the first and second result is the same, and then throw exception if it’s not.
Configuration Management (meta-data)
Cattle uses Netflix open-source configuration management framework Archaius for its own meta data managment. The Key feature of Archaius is that it change properties dynamically at runtime. It can read from JDBC, file, zookeeper etc.
Resources & Agents
Cattle does no real job, but instead delegates to the agents. There are some pre-defined resources and processes in cattle framework, such as HA, load balancer, IP, vnet, NIC, storage etc. It provides steady middle layer for different tasks on container orchestration.