To install the cluster, you need to generate an ISO for each host with this repository here.
To generate the ISO in the repository, you should launch these below commands:
cp srv_fai_config/class/SEAPATH.var.defaults srv_fai_config/class/SEAPATH.var $EDITOR srv_fai_config/class/SEAPATH.var ./build_iso.sh |
See the below section for more details on the configuration file.
In the configuration file, you must define these variables:
FAI_ALLOW_UNSIGNED
: Boolean to allow installation of packages from unsigned repositories (0 => true)UTC
: Boolean to set the system clock to UTC (possible values: yes or no)TIMEZONE
: Time to chooseKEYMAP
: Keyboard translation to chooseROOTPW
: Crypted password for rootSTOP_ON_ERROR
: TODOMAXPACKAGES
: TODOusername
: ID of the user account to be createdUSERPW
: Crypted password for the user account to be createdusernameansible
: ID of the ansible account to be createdmyrootkey
: TODOmyuserkey
: TODOansiblekey
: TODOapt_cdn
: TODOREMOTENIC
: Network interface to be setREMOTEADDR
: IP address to be set on REMOTENIC
with the maskREMOTEGW
: IP address for the gateway to be set on REMOTENIC
However, all host will be with the same IP address.
When the host is installed, the ansible/playbooks/cluster_setup_prerequisdebian.yaml
need to launch to finish the installation.
The inventory must define these variables to run the playbook:
apply_network_config
: Boolean to apply the network configuration
admin_ip_addr
: IP address for SNMP
cpumachinesnort
: Range of allowed CPUs for no RT machines
cpumachines
: Range of allowed CPUs for machines (RT and no RT)
cpumachinesrt
: Range of allowed CPUs for RT machines
cpuovs
: Range of allowed CPUs for OpenVSwitch
cpusystem
: Range of allowed CPUs for the system
cpuuser
: Range of allowed CPUs for the user
irqmask
: Set the IRQBALANCE_BANNED_CPUS
environment variable, see irqbalance
manuallogstash_server_ip
: IP address for logstash-seapath
alias in /etc/hosts
main_disk
: Main disk device to observe his temperature
workqueuemask
: The negation of the irqmask
(= ~irqmask
)
In this part, the playbook define the scheduling and the prioritization (see the section).
The project uses a real-time kernel, the linux kernel with the PREEMPT_RT patch. So, he needs to have some parameters as:
cpufreq.default_governor=performance
: Use the performance
governor by default (more details here).hugepagesz=1G
: Uses 1
giga-bytes for HugeTLB pages (more details here).intel_pstate=disable
: Disables the intel_pstate
as the default scaling driver for supported processors (more details here).isolcpus=nohz,domain,managed_irq
: See the Scheduling and priorization section.no_debug_object
: Disables object debugging.nosoftlockup
: Disable the soft-lockup detector (more details here).processors.max_cstate=1
and intel_idle.max_cstate=1
: Discards of all the idle states deeper than idle state 1
, for the acpi_idle
and intel_idle
drivers, respectively (more details here).rcu_nocbs
: See the Scheduling and priorization section.rcu_nocb_poll
: Make the kthreads poll for callbacks.rcutree.kthread_prio=10
: Set the SCHED_FIFO priority of the RCU per-CPU kthreads.skew_tick=1
: Helps to smooth jitter on systems with latency-sensitive applications running.tsc=reliable
: Disables clocksource verification at runtime, as well as the stability checks done at bootup.More details on the kernel's parameters here.
The disk is composed:
/boot/efi
with VFAT filesystem (512 MB)./boot
with ext4 filesystem (500 B)./
with ext4 filesystem (7 GB)./var/log
with ext4 filesystem (1 GB).This can be changed in the build_debian_iso/srv_fai_config/disk_config/
directory. There is always 2 versions (one in Legacy BIOS and an other in UEFI mode with the suffix "_EFI
").
On the host, you must set these sysctl settings:
net.bridge.bridge-nf-call-arptables = 0 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 |
You must define 3 network interfaces on each host of your cluster.