SlideShare a Scribd company logo
Rundeck How-To:
Advanced Cluster Settings
Nathan Fluegel May 30, 2019
Agenda
● Cluster Architecture
● Job Ownership
○ Scheduled jobs
○ One-off jobs
● Heartbeat Setting
● Cluster Remote Execution Policy
● Load Policy
● Auto-Takeover Policy
● Do you need these settings?
Advanced Cluster Settings
Advanced Cluster Settings
Job Ownership:
Scheduled Jobs
Scheduled jobs are always owned by a
single Rundeck server cluster member.
The default job owner is the cluster where
the schedule was first created.
If I had been logged in to Server1 when I
first set a schedule for JobA, JobA’s
scheduled runs will happen on Server1.
This behavior can be over-ridden through Cluster
Manager.
Job Ownership:
One-off Jobs
Jobs that are run at a point in time are owned
by a single Rundeck server instance within the
cluster.
By default, the job owner is the server instance
a user is connected to when the job run is
initiated.
If I had been logged in to Server1 when I
initiated a job run for JobA, that run happened
on Server1.
This default behavior can be over-ridden by
Cluster Remote Execution Policies.
Heartbeat
Settings
“Heartbeat” is a setting used with all
Rundeck servers to measure whether a
another server is still alive and able to
execute jobs.
The results of a heartbeat check can be
used to determine logically whether a
particular server can be depended on by
other settings or processes, such as
remote execution or autotakeover policies.
# heartbeat interval in seconds
rundeck.clusterMode.heartbeat.interval=30
# initial delay after startup to send heartbeat
rundeck.clusterMode.heartbeat.delay=10
# remote execute/abort message processing interval
in seconds
rundeck.clusterMode.remoteExec.process.interval=10
# age in seconds since last heartbeat to consider
another member inactive
rundeck.clusterMode.heartbeat.considerInactive=150
# age in seconds since last heartbeat to consider
another member dead
rundeck.clusterMode.heartbeat.considerDead=300
Heartbeat Settings
Configuration
Cluster Remote
Execution Policy
Based on policy configurations, Rundeck
Enterprise cluster members may forward
job executions to other cluster members.
The default policy is to have each job
executed locally. If a job is executed in a
project which is not assigned to a specific
profile, the default policy is used.
You can define multiple profiles and assign
different projects to different profiles.
Execution policies are defined on each
server in rundeck-config.properties.
rundeck.clusterMode.remoteExecution.policy = <Policy>
Valid settings for <Policy>:
None
Default. Executes locally only
Random
Executes randomly among allowed members
RoundRobin
Executes round-robin style among allowed members
Preset
Executes on one other preset member
Load
Executes on a member based on load (Cluster 2.3.0+)
Cluster Remote
Execution
Configuration
Policy
Policy setting indicates what method of
assignment will be used for jobs in a
particular policy.
rundeck.clusterMode.remoteExecution.config.allowedTags =
<List of Member Tags>
“Allowed” tags indicate any machines that could have a job assigned
to them as part of this policy.
rundeck.clusterMode.remoteExecution.config.preferredTags =
<List of Member Tags>
“Preferred” tags indicate machines that should be given job executions
by preference as part of this policy. Preferred machines should be a
subset of your allowed machine. If your policy has both allowed and
preferred machines, allowed tags would usually only receive a job if
there are no Preferred+Allowed tagged machines available.
Cluster Remote
Execution
Configuration
Member Tags
Tags are used to restrict which Cluster
Members could be assigned to run a
remote execution.
Tags are not the only way to define which
cluster members could receive jobs but
they are the most flexible and are
commonly used.
Tags are assigned to individual servers
by being added in each
framework.properties file as
desired.
rundeck.clusterMode.remoteExecution.config.allowed = <List
of Allowed Members>
Self - Execute locally
Other - Any other member except this one
UUID - A particular UUID
/regex/ - A regular expression matching a UUID
rundeck.clusterMode.remoteExecution.config.activeOnly =
true/false
Cluster Remote
Execution
Configuration
List of Allowed Members
Rather than using tags, you can define
allowed members statically.
If used in conjunction with tags, the
tagged servers would be used by
preference.
Active Only
If set to true, jobs will only be delegated
to an active machine (one with a
heartbeat).
rundeck.clusterMode.remoteExecution.profiles = profile1,
profile2
This setting is un-necessary if you’re only using one defined profile.
rundeck.clusterMode.remoteExecution.profile.profile1.projec
ts=projectA, projectB
The optional project name setting is provided in the context of a
specific profile. Typically, this would only occur if you have more than
one profile in play.
Cluster Remote
Execution
Configuration
Profile Name
Profile names are used to distinguish
multiple profiles from one another for
more complex configurations.
Project Name
Each policy can be associated with one
or more projects, if desired. This can be
used to determine if jobs in a specific
project should always be executed on
specific machines.
rundeck.clusterMode.remoteExecution.config.criteria =
threadRatio,load
This setting identifies which criteria will be used to compute load for
this policy.
rundeck.clusterMode.remoteExecution.config.weights =
1.0,1.5
Defines relative computational value of the criteria. In this example,
load is weighted at 50% more than threadRatio.
rundeck.clusterMode.remoteExecution.config.groupWeight=1,0,
0,0
Cluster members are sorted by weighted load and placed into groups.
Each group has a weight and the policy randomly chooses a group
based on the proportional weight of the group. A group member is
then chosen randomly and used.
This setting defines four groups, each with 25% of available members.
Weights define 100% chance of using group 1.
Cluster Remote
Execution
Configuration
Load Balanced Policy
When a remote execution configuration
policy is set to load, jobs will be assigned
to servers based on statistics calculated
through the heartbeat process. Load is
calculated based on thread ratio and
percentage of CPU for each member.
Example #1
rundeck.clusterMode.remoteExecution.policy = Random
rundeck.clusterMode.remoteExecution.config.allowed
= other
rundeck.clusterMode.remoteExecution.config.activeOn
ly = true
Example #2
rundeck.clusterMode.remoteExecution.policy =
RoundRobin
rundeck.clusterMode.remoteExecution.config.allowed
= self,/1C519C5A-4E78-4BE9-85EC-.+/
rundeck.clusterMode.remoteExecution.config.activeOn
ly = true
Cluster Remote
Execution
Configuration
Example #1
A simple policy that sends all jobs to
a random peer machine as long as
that machine has a heartbeat.
Example #2
Round robin assignment among self
and any instances with a UUID that
matches the regex.
rundeck.clusterMode.remoteExecution.profiles = profile1, profile2
Example #3
rundeck.clusterMode.remoteExecution.profile.profile1.policy= RoundRobin
rundeck.clusterMode.remoteExecution.profile.profile1.projects=projectA,projectB
rundeck.clusterMode.remoteExecution.profile.profile1.config.allowed = other
rundeck.clusterMode.remoteExecution.profile.profile1.config.allowedTags = *
rundeck.clusterMode.remoteExecution.profile.profile1.config.preferredTags =
worker,secondary
rundeck.clusterMode.remoteExecution.profile.profile1.config.activeOnly = true
Example #4
rundeck.clusterMode.remoteExecution.profile.profile2.policy = Preset
rundeck.clusterMode.remoteExecution.profile.profile2.config.allowed = eff4405a-
58aa-4f14-b7bd-68e1e44b53d4
rundeck.clusterMode.remoteExecution.profile.profile2.config.activeOnly = true
Cluster Remote Execution Configuration - Examples
Auto-Takeover
Policy
If a cluster member goes down, an auto-
takeover policy helps moved scheduled
jobs to another cluster member.
Autotakeover uses heartbeat settings to
determine whether a machine is alive or
not for purposes of triggering autotakeover.
For non-scheduled jobs, autotakeover will
not kick in. Instead, your remote execution
policies can account for this situation.
# enables autotakeover for members detected as "dead"
rundeck.clusterMode.autotakeover.enabled=true
# policy indicates which nodes to take over. "Any": all dead nodes. "Static": only allowed uuids
rundeck.clusterMode.autotakeover.policy=any
# delay in seconds to wait after sending autotakeover proposal
rundeck.clusterMode.autotakeover.delay = 60
# sleep in minimum seconds between autotakeover attempts for a particular destination
rundeck.clusterMode.autotakeover.sleep = 300
# Name servers to act as takeover destinations, by UUID
rundeck.clusterMode.autotakeover.config.allowed=<uuid1>,<uuid2>,...
Auto-Takeover Configuration
Do you need these settings?

More Related Content

PDF
はじめてのScriptable Build Pipeline
PDF
Steam ゲーム内購入 サーバーサイド実装について
PDF
Jenkinsの構成・運用パターン
PDF
Presentation de NeuVector 5.0
PDF
API Vulnerabilties and What to Do About Them
PDF
안정적인 서비스 운영 2014.03
PPTX
CI, CD, CT, Deploy, IaaS, DevOps, Stage
PPTX
はじめてのScriptable Build Pipeline
Steam ゲーム内購入 サーバーサイド実装について
Jenkinsの構成・運用パターン
Presentation de NeuVector 5.0
API Vulnerabilties and What to Do About Them
안정적인 서비스 운영 2014.03
CI, CD, CT, Deploy, IaaS, DevOps, Stage

What's hot (20)

PDF
Hair Groom入門 (UE4 Character Art Dive Online)
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
PDF
onpremise환경에서 kubespray설치
PDF
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
PDF
게임 애셋 스트리밍 패치
PDF
エンタープライズ分野向けUE4最新機能のご紹介
PPTX
Infrastructure as Code (IaC)
PPTX
Basic Jenkins Guide.pptx
PDF
Secure coding-guidelines
PPTX
UE4 3Dゲーム制作入門 その1 : ベースプロジェクト作成編
PPTX
Threat Hunting with Splunk
PDF
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
PPTX
Photon Fusionのはじめの一歩
PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
PDF
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
PPTX
Veeam backup and replication
PPTX
WebAssembly: In a Nutshell
PDF
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
PDF
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
PPTX
Pentesting jwt
Hair Groom入門 (UE4 Character Art Dive Online)
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
onpremise환경에서 kubespray설치
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
게임 애셋 스트리밍 패치
エンタープライズ分野向けUE4最新機能のご紹介
Infrastructure as Code (IaC)
Basic Jenkins Guide.pptx
Secure coding-guidelines
UE4 3Dゲーム制作入門 その1 : ベースプロジェクト作成編
Threat Hunting with Splunk
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
Photon Fusionのはじめの一歩
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
Veeam backup and replication
WebAssembly: In a Nutshell
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
Pentesting jwt
Ad

More from Rundeck (20)

PDF
Rundeck Community Office Hours: Using Variables with Job Steps
PPTX
Introducing PagerDuty Process Automation
PDF
How to Build a Custom Plugin in Rundeck
PDF
Lunch and learn: Getting started with Rundeck & Ansible
PDF
Self Service Cloud Operations: Safely Delegate the Management of your Cloud ...
PDF
Rundeck Office Hours: Best Practices Access Control Policies
PPTX
Mastering Secrets Management in Rundeck
PDF
What's New in Rundeck 3.4
PDF
Automate Yourself Out of a Job: Safely Delegate the Management of your Azure...
PDF
Super-Charge Your Site Reliability Practices with Runbook Automation
PPTX
Introduction to Rundeck
PPTX
Automated Remediation with Rundeck + Sensu
PDF
Modernizing Incident Response
PDF
Runbook Automation: Old News or a Key to Unlock Performance? [DOES2020]
PDF
Datadog + Rundeck at DASH 2020
PDF
Rundeck Overview
PDF
Empower Devs, Simplify Ops, and Accelerate your Digital Transformation
PDF
Maximizing Your Rundeck Migration
PDF
Business Continuity for Humans: Keeping Your Business Running When Your Peopl...
PDF
PagerDuty + Rundeck = Shorter Incidents, Fewer Escalations
Rundeck Community Office Hours: Using Variables with Job Steps
Introducing PagerDuty Process Automation
How to Build a Custom Plugin in Rundeck
Lunch and learn: Getting started with Rundeck & Ansible
Self Service Cloud Operations: Safely Delegate the Management of your Cloud ...
Rundeck Office Hours: Best Practices Access Control Policies
Mastering Secrets Management in Rundeck
What's New in Rundeck 3.4
Automate Yourself Out of a Job: Safely Delegate the Management of your Azure...
Super-Charge Your Site Reliability Practices with Runbook Automation
Introduction to Rundeck
Automated Remediation with Rundeck + Sensu
Modernizing Incident Response
Runbook Automation: Old News or a Key to Unlock Performance? [DOES2020]
Datadog + Rundeck at DASH 2020
Rundeck Overview
Empower Devs, Simplify Ops, and Accelerate your Digital Transformation
Maximizing Your Rundeck Migration
Business Continuity for Humans: Keeping Your Business Running When Your Peopl...
PagerDuty + Rundeck = Shorter Incidents, Fewer Escalations
Ad

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Modernizing your data center with Dell and AMD
PPT
Teaching material agriculture food technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Machine learning based COVID-19 study performance prediction
PPTX
A Presentation on Artificial Intelligence
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Review of recent advances in non-invasive hemoglobin estimation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Encapsulation_ Review paper, used for researhc scholars
Mobile App Security Testing_ A Comprehensive Guide.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Modernizing your data center with Dell and AMD
Teaching material agriculture food technology
Building Integrated photovoltaic BIPV_UPV.pdf
MYSQL Presentation for SQL database connectivity
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
The AUB Centre for AI in Media Proposal.docx
Machine learning based COVID-19 study performance prediction
A Presentation on Artificial Intelligence
“AI and Expert System Decision Support & Business Intelligence Systems”
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Review of recent advances in non-invasive hemoglobin estimation

Advanced Cluster Settings

  • 1. Rundeck How-To: Advanced Cluster Settings Nathan Fluegel May 30, 2019
  • 2. Agenda ● Cluster Architecture ● Job Ownership ○ Scheduled jobs ○ One-off jobs ● Heartbeat Setting ● Cluster Remote Execution Policy ● Load Policy ● Auto-Takeover Policy ● Do you need these settings?
  • 5. Job Ownership: Scheduled Jobs Scheduled jobs are always owned by a single Rundeck server cluster member. The default job owner is the cluster where the schedule was first created. If I had been logged in to Server1 when I first set a schedule for JobA, JobA’s scheduled runs will happen on Server1. This behavior can be over-ridden through Cluster Manager.
  • 6. Job Ownership: One-off Jobs Jobs that are run at a point in time are owned by a single Rundeck server instance within the cluster. By default, the job owner is the server instance a user is connected to when the job run is initiated. If I had been logged in to Server1 when I initiated a job run for JobA, that run happened on Server1. This default behavior can be over-ridden by Cluster Remote Execution Policies.
  • 7. Heartbeat Settings “Heartbeat” is a setting used with all Rundeck servers to measure whether a another server is still alive and able to execute jobs. The results of a heartbeat check can be used to determine logically whether a particular server can be depended on by other settings or processes, such as remote execution or autotakeover policies.
  • 8. # heartbeat interval in seconds rundeck.clusterMode.heartbeat.interval=30 # initial delay after startup to send heartbeat rundeck.clusterMode.heartbeat.delay=10 # remote execute/abort message processing interval in seconds rundeck.clusterMode.remoteExec.process.interval=10 # age in seconds since last heartbeat to consider another member inactive rundeck.clusterMode.heartbeat.considerInactive=150 # age in seconds since last heartbeat to consider another member dead rundeck.clusterMode.heartbeat.considerDead=300 Heartbeat Settings Configuration
  • 9. Cluster Remote Execution Policy Based on policy configurations, Rundeck Enterprise cluster members may forward job executions to other cluster members. The default policy is to have each job executed locally. If a job is executed in a project which is not assigned to a specific profile, the default policy is used. You can define multiple profiles and assign different projects to different profiles. Execution policies are defined on each server in rundeck-config.properties.
  • 10. rundeck.clusterMode.remoteExecution.policy = <Policy> Valid settings for <Policy>: None Default. Executes locally only Random Executes randomly among allowed members RoundRobin Executes round-robin style among allowed members Preset Executes on one other preset member Load Executes on a member based on load (Cluster 2.3.0+) Cluster Remote Execution Configuration Policy Policy setting indicates what method of assignment will be used for jobs in a particular policy.
  • 11. rundeck.clusterMode.remoteExecution.config.allowedTags = <List of Member Tags> “Allowed” tags indicate any machines that could have a job assigned to them as part of this policy. rundeck.clusterMode.remoteExecution.config.preferredTags = <List of Member Tags> “Preferred” tags indicate machines that should be given job executions by preference as part of this policy. Preferred machines should be a subset of your allowed machine. If your policy has both allowed and preferred machines, allowed tags would usually only receive a job if there are no Preferred+Allowed tagged machines available. Cluster Remote Execution Configuration Member Tags Tags are used to restrict which Cluster Members could be assigned to run a remote execution. Tags are not the only way to define which cluster members could receive jobs but they are the most flexible and are commonly used. Tags are assigned to individual servers by being added in each framework.properties file as desired.
  • 12. rundeck.clusterMode.remoteExecution.config.allowed = <List of Allowed Members> Self - Execute locally Other - Any other member except this one UUID - A particular UUID /regex/ - A regular expression matching a UUID rundeck.clusterMode.remoteExecution.config.activeOnly = true/false Cluster Remote Execution Configuration List of Allowed Members Rather than using tags, you can define allowed members statically. If used in conjunction with tags, the tagged servers would be used by preference. Active Only If set to true, jobs will only be delegated to an active machine (one with a heartbeat).
  • 13. rundeck.clusterMode.remoteExecution.profiles = profile1, profile2 This setting is un-necessary if you’re only using one defined profile. rundeck.clusterMode.remoteExecution.profile.profile1.projec ts=projectA, projectB The optional project name setting is provided in the context of a specific profile. Typically, this would only occur if you have more than one profile in play. Cluster Remote Execution Configuration Profile Name Profile names are used to distinguish multiple profiles from one another for more complex configurations. Project Name Each policy can be associated with one or more projects, if desired. This can be used to determine if jobs in a specific project should always be executed on specific machines.
  • 14. rundeck.clusterMode.remoteExecution.config.criteria = threadRatio,load This setting identifies which criteria will be used to compute load for this policy. rundeck.clusterMode.remoteExecution.config.weights = 1.0,1.5 Defines relative computational value of the criteria. In this example, load is weighted at 50% more than threadRatio. rundeck.clusterMode.remoteExecution.config.groupWeight=1,0, 0,0 Cluster members are sorted by weighted load and placed into groups. Each group has a weight and the policy randomly chooses a group based on the proportional weight of the group. A group member is then chosen randomly and used. This setting defines four groups, each with 25% of available members. Weights define 100% chance of using group 1. Cluster Remote Execution Configuration Load Balanced Policy When a remote execution configuration policy is set to load, jobs will be assigned to servers based on statistics calculated through the heartbeat process. Load is calculated based on thread ratio and percentage of CPU for each member.
  • 15. Example #1 rundeck.clusterMode.remoteExecution.policy = Random rundeck.clusterMode.remoteExecution.config.allowed = other rundeck.clusterMode.remoteExecution.config.activeOn ly = true Example #2 rundeck.clusterMode.remoteExecution.policy = RoundRobin rundeck.clusterMode.remoteExecution.config.allowed = self,/1C519C5A-4E78-4BE9-85EC-.+/ rundeck.clusterMode.remoteExecution.config.activeOn ly = true Cluster Remote Execution Configuration Example #1 A simple policy that sends all jobs to a random peer machine as long as that machine has a heartbeat. Example #2 Round robin assignment among self and any instances with a UUID that matches the regex.
  • 16. rundeck.clusterMode.remoteExecution.profiles = profile1, profile2 Example #3 rundeck.clusterMode.remoteExecution.profile.profile1.policy= RoundRobin rundeck.clusterMode.remoteExecution.profile.profile1.projects=projectA,projectB rundeck.clusterMode.remoteExecution.profile.profile1.config.allowed = other rundeck.clusterMode.remoteExecution.profile.profile1.config.allowedTags = * rundeck.clusterMode.remoteExecution.profile.profile1.config.preferredTags = worker,secondary rundeck.clusterMode.remoteExecution.profile.profile1.config.activeOnly = true Example #4 rundeck.clusterMode.remoteExecution.profile.profile2.policy = Preset rundeck.clusterMode.remoteExecution.profile.profile2.config.allowed = eff4405a- 58aa-4f14-b7bd-68e1e44b53d4 rundeck.clusterMode.remoteExecution.profile.profile2.config.activeOnly = true Cluster Remote Execution Configuration - Examples
  • 17. Auto-Takeover Policy If a cluster member goes down, an auto- takeover policy helps moved scheduled jobs to another cluster member. Autotakeover uses heartbeat settings to determine whether a machine is alive or not for purposes of triggering autotakeover. For non-scheduled jobs, autotakeover will not kick in. Instead, your remote execution policies can account for this situation.
  • 18. # enables autotakeover for members detected as "dead" rundeck.clusterMode.autotakeover.enabled=true # policy indicates which nodes to take over. "Any": all dead nodes. "Static": only allowed uuids rundeck.clusterMode.autotakeover.policy=any # delay in seconds to wait after sending autotakeover proposal rundeck.clusterMode.autotakeover.delay = 60 # sleep in minimum seconds between autotakeover attempts for a particular destination rundeck.clusterMode.autotakeover.sleep = 300 # Name servers to act as takeover destinations, by UUID rundeck.clusterMode.autotakeover.config.allowed=<uuid1>,<uuid2>,... Auto-Takeover Configuration
  • 19. Do you need these settings?