... | @@ -152,7 +152,7 @@ Do not forget to follow the [next steps](#next-steps), above. |
... | @@ -152,7 +152,7 @@ Do not forget to follow the [next steps](#next-steps), above. |
|
|
|
|
|
To create a VM with iSCSI backing, a disk must first be created on the
|
|
To create a VM with iSCSI backing, a disk must first be created on the
|
|
SAN, then adopted in a VM, which needs to be *reinstalled* on top of
|
|
SAN, then adopted in a VM, which needs to be *reinstalled* on top of
|
|
that. This is typical how large disks are provisionned in the
|
|
that. This is typically how large disks are provisionned in the (now defunct)
|
|
`gnt-chi` cluster, in the [Cymru POP](howto/new-machine-cymru).
|
|
`gnt-chi` cluster, in the [Cymru POP](howto/new-machine-cymru).
|
|
|
|
|
|
The following instructions assume you are on a node with an [iSCSI
|
|
The following instructions assume you are on a node with an [iSCSI
|
... | @@ -585,7 +585,7 @@ The resize is now complete. |
... | @@ -585,7 +585,7 @@ The resize is now complete. |
|
|
|
|
|
All the above procedures detail the normal use case where disks are
|
|
All the above procedures detail the normal use case where disks are
|
|
hosted as "plain" files or with the DRBD backend. However, some
|
|
hosted as "plain" files or with the DRBD backend. However, some
|
|
instances (most notably in the gnt-chi cluster) have their storage
|
|
instances (most notably in the, now defunct, gnt-chi cluster) have their storage
|
|
backed by an iSCSI SAN.
|
|
backed by an iSCSI SAN.
|
|
|
|
|
|
Growing a disk hosted on a SAN like the Dell PowerVault MD3200i
|
|
Growing a disk hosted on a SAN like the Dell PowerVault MD3200i
|
... | @@ -1765,7 +1765,7 @@ the `gnt-chi` cluster to `gnt-dal`. |
... | @@ -1765,7 +1765,7 @@ the `gnt-chi` cluster to `gnt-dal`. |
|
|
|
|
|
Once the above configuration is completed, the following procedure
|
|
Once the above configuration is completed, the following procedure
|
|
will move *one* VM, in this example the `test-01` VM from the
|
|
will move *one* VM, in this example the `test-01` VM from the
|
|
`gnt-chi` to the `gnt-dal` cluster:
|
|
(now defunct) `gnt-chi` to the `gnt-dal` cluster:
|
|
|
|
|
|
1. stop the VM, on the source cluster:
|
|
1. stop the VM, on the source cluster:
|
|
|
|
|
... | @@ -2837,163 +2837,6 @@ memory-size=32768,nic-count=8,spindle-use=12\ |
... | @@ -2837,163 +2837,6 @@ memory-size=32768,nic-count=8,spindle-use=12\ |
|
memory-size=128,nic-count=1,spindle-use=1
|
|
memory-size=128,nic-count=1,spindle-use=1
|
|
```
|
|
```
|
|
|
|
|
|
### New gnt-chi node
|
|
|
|
|
|
|
|
1. to create a new box, follow the [cymru new-machine howto](howto/new-machine-cymru)
|
|
|
|
|
|
|
|
2. follow the [howto/new-machine](howto/new-machine) post-install configuration
|
|
|
|
|
|
|
|
3. Allocate a private IP address in the `30.172.in-addr.arpa` zone for
|
|
|
|
the node, in the `admin/dns/domains.git` repository
|
|
|
|
|
|
|
|
4. add the private IP address to the `eth1` interface, for example in
|
|
|
|
`/etc/network/interfaces.d/eth1`:
|
|
|
|
|
|
|
|
auto eth1
|
|
|
|
iface eth1 inet static
|
|
|
|
address 172.30.130.5/24
|
|
|
|
|
|
|
|
This IP must be allocated in the reverse DNS zone file
|
|
|
|
(`30.172.in-addr.arpa`) and the `torproject.org` zone file in
|
|
|
|
the `dns/domains.git` repository.
|
|
|
|
|
|
|
|
5. enable the interface:
|
|
|
|
|
|
|
|
ifup eth1
|
|
|
|
|
|
|
|
6. setup a bridge on the public interface, replacing the `eth0` blocks
|
|
|
|
with something like:
|
|
|
|
|
|
|
|
auto eth0
|
|
|
|
iface eth0 inet manual
|
|
|
|
|
|
|
|
auto br0
|
|
|
|
iface br0 inet static
|
|
|
|
address 38.229.82.104/24
|
|
|
|
gateway 38.229.82.1
|
|
|
|
bridge_ports eth0
|
|
|
|
bridge_stp off
|
|
|
|
bridge_fd 0
|
|
|
|
|
|
|
|
# IPv6 configuration
|
|
|
|
iface br0 inet6 static
|
|
|
|
accept_ra 0
|
|
|
|
address 2604:8800:5000:82:baca:3aff:fe5d:8774/64
|
|
|
|
gateway 2604:8800:5000:82::1
|
|
|
|
|
|
|
|
6. allow modules to be loaded, cross your fingers that you didn't
|
|
|
|
screw up the network configuration above, and reboot:
|
|
|
|
|
|
|
|
touch /etc/no_modules_disabled
|
|
|
|
reboot
|
|
|
|
|
|
|
|
7. configure the node in Puppet by adding it to the
|
|
|
|
`roles::ganeti::chi` class, and run Puppet on the new node:
|
|
|
|
|
|
|
|
puppet agent -t
|
|
|
|
|
|
|
|
8. re-disable module loading:
|
|
|
|
|
|
|
|
rm /etc/no_modules_disabled
|
|
|
|
|
|
|
|
9. run puppet across the Ganeti cluster so firewalls are correctly
|
|
|
|
configured:
|
|
|
|
|
|
|
|
cumin -p 0 'C:roles::ganeti::chi' 'puppet agent -t'
|
|
|
|
|
|
|
|
10. Then the node is ready to be added to the cluster, by running
|
|
|
|
this on the master node:
|
|
|
|
|
|
|
|
gnt-node add \
|
|
|
|
--secondary-ip 172.30.130.5 \
|
|
|
|
--no-ssh-key-check \
|
|
|
|
--no-node-setup \
|
|
|
|
chi-node-05.torproject.org
|
|
|
|
|
|
|
|
If this is an entirely new cluster, you need a different
|
|
|
|
procedure, see [the cluster initialization procedure](#gnt-fsn-cluster-initialization) instead.
|
|
|
|
|
|
|
|
11. make sure everything is great in the cluster:
|
|
|
|
|
|
|
|
gnt-cluster verify
|
|
|
|
|
|
|
|
If the last step fails with SSH errors, you may need to re-synchronise
|
|
|
|
the SSH `known_hosts` file, see [SSH key verification failures](#ssh-key-verification-failures).
|
|
|
|
|
|
|
|
### gnt-chi cluster initialization
|
|
|
|
|
|
|
|
This procedure replaces the `gnt-node add` step in the initial setup
|
|
|
|
of the first Ganeti node when the `gnt-chi` cluster was setup:
|
|
|
|
|
|
|
|
gnt-cluster init \
|
|
|
|
--master-netdev eth1 \
|
|
|
|
--nic-parameters link=br0 \
|
|
|
|
--vg-name vg_ganeti \
|
|
|
|
--secondary-ip 172.30.130.1 \
|
|
|
|
--enabled-hypervisors kvm \
|
|
|
|
--mac-prefix 06:66:38 \
|
|
|
|
--no-ssh-init \
|
|
|
|
--no-etc-hosts \
|
|
|
|
chignt.torproject.org
|
|
|
|
|
|
|
|
The above assumes that `chignt` is already in DNS. See the [MAC
|
|
|
|
address prefix selection](#mac-address-prefix-selection) section for information on how the
|
|
|
|
`--mac-prefix` argument was selected.
|
|
|
|
|
|
|
|
Then the following extra configuration was performed:
|
|
|
|
|
|
|
|
```
|
|
|
|
gnt-cluster modify --reserved-lvs vg_ganeti/root,vg_ganeti/swap
|
|
|
|
gnt-cluster modify -H kvm:kernel_path=,initrd_path=
|
|
|
|
gnt-cluster modify -H kvm:security_model=pool
|
|
|
|
gnt-cluster modify -H kvm:kvm_extra='-device virtio-rng-pci\,bus=pci.0\,addr=0x1e\,max-bytes=1024\,period=1000 -global isa-fdc.fdtypeA=none'
|
|
|
|
gnt-cluster modify -H kvm:disk_cache=none
|
|
|
|
gnt-cluster modify -H kvm:disk_discard=unmap
|
|
|
|
gnt-cluster modify -H kvm:scsi_controller_type=virtio-scsi-pci
|
|
|
|
gnt-cluster modify -H kvm:disk_type=scsi-hd
|
|
|
|
gnt-cluster modify -H kvm:migration_bandwidth=950
|
|
|
|
gnt-cluster modify -H kvm:migration_downtime=500
|
|
|
|
gnt-cluster modify -H kvm:migration_caps=postcopy-ram
|
|
|
|
gnt-cluster modify -D drbd:c-plan-ahead=0,disk-custom='--c-plan-ahead 0'
|
|
|
|
gnt-cluster modify --uid-pool 4000-4019
|
|
|
|
```
|
|
|
|
|
|
|
|
The upper limit for CPU count and memory size were doubled, to 16 and
|
|
|
|
64G, respectively, with:
|
|
|
|
|
|
|
|
```
|
|
|
|
gnt-cluster modify --ipolicy-bounds-specs \
|
|
|
|
max:cpu-count=16,disk-count=16,disk-size=1048576,\
|
|
|
|
memory-size=307200,nic-count=8,spindle-use=12\
|
|
|
|
/min:cpu-count=1,disk-count=1,disk-size=512,\
|
|
|
|
memory-size=128,nic-count=1,spindle-use=1
|
|
|
|
```
|
|
|
|
|
|
|
|
NOTE: watch out for whitespace here. The [original source](https://johnny85v.wordpress.com/2016/06/13/ganeti-commands/) for this
|
|
|
|
command had too much whitespace, which fails with:
|
|
|
|
|
|
|
|
Failure: unknown/wrong parameter name 'Missing value for key '' in option --ipolicy-bounds-specs'
|
|
|
|
|
|
|
|
The disk templates also had to be modified to account for iSCSI
|
|
|
|
devices:
|
|
|
|
|
|
|
|
gnt-cluster modify --enabled-disk-templates drbd,plain,blockdev
|
|
|
|
gnt-cluster modify --ipolicy-disk-templates drbd,plain,blockdev
|
|
|
|
|
|
|
|
The [network configuration](#network-configuration) (below) must also be performed for the
|
|
|
|
address blocks reserved in the cluster. This is the actual initial
|
|
|
|
configuration performed:
|
|
|
|
|
|
|
|
gnt-network add --network 38.229.82.0/24 --gateway 38.229.82.1 --network6 2604:8800:5000:82::/64 --gateway6 2604:8800:5000:82::1 gnt-chi-01
|
|
|
|
gnt-network connect --nic-parameters=link=br0 gnt-chi-01 default
|
|
|
|
|
|
|
|
The following IPs were reserved:
|
|
|
|
|
|
|
|
gnt-network modify --add-reserved-ips=38.229.82.2,38.229.82.3,38.229.82.4,38.229.82.5,38.229.82.6,38.229.82.7,38.229.82.8,38.229.82.9,38.229.82.10,38.229.82.11,38.229.82.12,38.229.82.13,38.229.82.14,38.229.82.15,38.229.82.16,38.229.82.17,38.229.82.18,38.229.82.19 gnt-chi-01
|
|
|
|
|
|
|
|
The first two are for the gateway, but the rest is temporary and might
|
|
|
|
be reclaimed eventually.
|
|
|
|
|
|
|
|
### New gnt-dal node
|
|
### New gnt-dal node
|
|
|
|
|
|
1. To create a new box, follow [howto/quintex](howto/quintex) tutorial
|
|
1. To create a new box, follow [howto/quintex](howto/quintex) tutorial
|
... | @@ -3322,7 +3165,7 @@ other words, the MAC address must have 2, 6, A or E as a its second |
... | @@ -3322,7 +3165,7 @@ other words, the MAC address must have 2, 6, A or E as a its second |
|
xA - xx - xx - xx - xx - xx
|
|
xA - xx - xx - xx - xx - xx
|
|
xE - xx - xx - xx - xx - xx
|
|
xE - xx - xx - xx - xx - xx
|
|
|
|
|
|
We used `06:66:38` in the gnt-chi cluster for that reason. We picked
|
|
We used `06:66:38` in the (now defunct) gnt-chi cluster for that reason. We picked
|
|
the `06:66` prefix to resemble the existing `00:66` prefix used in
|
|
the `06:66` prefix to resemble the existing `00:66` prefix used in
|
|
`gnt-fsn` but varied the last quad (from `:37` to `:38`) to make them
|
|
`gnt-fsn` but varied the last quad (from `:37` to `:38`) to make them
|
|
slightly more different-looking.
|
|
slightly more different-looking.
|
... | | ... | |