[toc]
networks | Controller/Network | Compute-1 | Compute-2 |
---|---|---|---|
management (br-int) | 10.154.0.2 | 10.154.0.3 | 10.154.0.4 |
external (br-ex) | 10.0.0.2 | / | / |
On each node :
#!/bin/sh
setenforce 0;
systemctl stop NetworkManager firewalld;
systemctl disable NetworkManager firewalld;
yum update -y;
sudo reboot;
On each node :
- go to
/etc/hosts
- copy dns lines on each node to have each time the 3 nodes hostnames :
# /etc/hosts
...
10.154.0.2 controller.europe-west2-a.c.arcl-306615.internal controller
10.154.0.3 compute-1.europe-west2-a.c.arcl-306615.internal compute-1
10.154.0.4 compute-2.europe-west2-b.c.arcl-306615.internal compute-2
On each node in the file /etc/ssh/sshd_config
, find those lines and change them by :
PermitRootLogin yes
PasswordAuthentication yes
# After exiting :
systemctl restart sshd
On Controller node :
# change root passwd
sudo su -
passwd
# create ssh key
ssh-keygen
cat /root/.ssh/id_rsa.pub
# copy the content and put it inside /root/.ssh/authorized_keys in compute nodes
# or add the ssh public key directly via GCP
yum install -y https://www.rdoproject.org/repos/rdo-release.rpm;
yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-rocky/rdo-release-rocky-2.noarch.rpm
yum install -y openstack-packstack;
# launch install with packstack given file
packstack --answer-file answer.txt
In the file /etc/sysconfig/network-scripts/ifcfg-br-ex
generated, add your controller address :
IPADDR=10.0.0.2 #eth1 address
NETMASK=255.255.255.0 # eth1 netmask
GATEWAY=10.0.0.1 # eth1 gateway
Then :
systemctl restart network
## give the addr of eth1 to br-ex after each reboot of the controller
ifdown eth1
ifdown br-ex
ifup br-ex
ifup eth1
An error could be raised during the install because of facter -p, then you must execute inside of each node yum install -y leatherman; yum downgrade leatherman
curl ifconfig.me
# will give you your external ip, ex : 34.105.150.202
vim /etc/httpd/conf.d/15-horizon-vhosts.conf
# Replace the URL in ServerAlias line with the one given by curl
systemctl restart httpd
openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat public;
openstack subnet create --no-dhcp --network public \
--allocation-pool start=10.0.0.10,end=10.0.0.250 \
--dns-nameserver 8.8.8.8 --gateway 10.0.0.2 \
--subnet-range 10.0.0.0/24 provider
In your config file answer.txt : your must put
provider:br-ex
for OVS_BRIDGE_MAPPING_IFACES
#!/bin/sh
systemctl start neutron-l3-agent
ifdown eth1
ifdown br-ex
ifup br-ex
ifup eth1
The public and private networks should have the same MTUs (1400 is good)
openstack network set --mtu <mtu value> <network id >
On your controller :
- List firewall rules
iptables -L --line-number
- if there are rules which reject flows, then use
iptables -D <chain_name> <rule_number>
to delete them- Exemple :
iptables -D INPUT 32
- Exemple :
- execute this line
echo 1 > /proc/sys/net/ipv4/ip_forward
Save iptable config by using
service iptables save
Use
tcpdump -i <iface> imcp
Redirect flows to eth0 with iptables to simulate it :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.0.109:3306;
iptables -t nat -A POSTROUTING -j MASQUERADE
# ou plus good practice :
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.109 --dport 3306 -j SNAT --to-source 10.154.0.2:3000
https://docs.ukcloud.com/articles/openstack/ostack-how-recover-instance.html
We will work on Fedora VMs :
- Master1 : 10.0.0.109
- Master2 : 10.0.0.159
Source here
On each instance :
# Install packages
sudo dnf install https://repo.mysql.com//mysql80-community-release-fc31-1.noarch.rpm
sudo dnf install mysql-community-server
# Start Service
sudo systemctl start mysqld
sudo systemctl enable mysqld
# find Default Password
sudo grep 'temporary password' /var/log/mysqld.log
# Configure mysql before the first use
sudo mysql_secure_installation
# connect to it
sudo mysql -u root -p
# To remove mysql
sudo rpm -e --nodeps mysql-community-libs mysql-community-common mysql-community-server
On Master1, add to /etc/my.cnf
under [mysqld]:
server-id=1
log-bin=mysql-bin
max_connections=10000
Restart mysqld with :
systemctl restart mysqld
Open mysql command line with mysql -u root -p
:
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY "Admin123#";
GRANT REPLICATION SLAVE ON *.* to 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS\G; # File=mysql-bin.000001 Position=458
On Master1 :
mysqldump -p mysql > mysql.sql #create a file where all master db & user is saved
scp mysql.sql 10.0.0.159:/root/ #create and add pub key of master1 to master2 if needed
On Master2 :
- add to
/etc/my.cnf
under [mysqld]:
server-id=2
max_connections=10000
- Restart mysqld services :
systemctl restart mysqld
- Copy the db of Master1 in Master2 to add the same replicate user:
mysql -p mysql < mysql.sql
To do a master master replication, we must do a master slave with master1 as master and another master slave with master2 as master
On Master2 , open mysql and :
CHANGE MASTER TO
master_host="10.0.0.109",
master_user="replicator",
master_password="Admin123#",
master_log_file="mysql-bin.000013",
master_log_pos=3645;
START SLAVE;
# if doesn't work, STOP IT AND START IT with
# stop slave;
# reset slave;
# start slave;
master_log_file
andmaster_log_pos
can be found [here](####Prepare Master1) andmaster_host
is the Master1 address
Verify if the Master1 is connected with show processlist;
or show slave status\G;
On Master1, verify the established connection with :
netstat -natp | egrep -i established.*mysql
# yum install net-tools bind-utils;
On Master2 :
- add to
/etc/my.cnf
under [mysqld]:
server-id=2 ## already added
log-bin=mysql-bin
- Restart mysqld services :
systemctl restart mysqld
- Open mysql and get the master status
SHOW MASTER STATUS\G; # File=mysql-bin.000002 Position=757
On Master1:
CHANGE MASTER TO
master_host="10.0.0.159",
master_user="replicator",
master_password="Admin123#",
master_log_file="mysql-bin.000019",
master_log_pos=546;
START SLAVE;
# if doesn't work, STOP IT AND START IT with
# stop slave;
# reset slave;
# start slave;
master_log_file
andmaster_log_pos
can be found [here](####Prepare Master2) andmaster_host
is the Master2 address
Verify if the Master2 is connected with show processlist;
or show slave status\G;
Error 1062 : Master Master Broken
Detailed explanation here : https://serverfault.com/questions/459400/mysql-master-master-broken
Name | master1 | master2 |
---|---|---|
Address | 10.0.0.18 | 10.0.0.150 |
OS | centos7 | centos7 |
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
vim /etc/selinux/config ## setenforce=disabled
reboot
sudo yum remove mariadb-libs -y
sudo echo "
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
" > /etc/yum.repos.d/cluster.repo
sudo yum install socat
sudo yum install MariaDB-Galera-server MariaDB-client rsync galera
sudo systemctl start mysql
sudo mysql_secure_installation
sudo systemctl stop mysql
sudo vim /etc/my.cnf.d/server.cnf ## put under mariadb-10.0
[mariadb-10.0]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.18,10.0.0.150"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='10.0.0.18' # replace by 10.0.0.150 for master-2
wsrep_node_name='master-1' # replace by master-2 for master-2
wsrep_sst_method=rsync
wsrep_sst_auth=db_user:admin
sudo /etc/init.d/mysql start --wsrep-new-cluster
sudo systemctl start mysql
- install HAproxy :
yum -y install haproxy
systemctl enable haproxy
# ps SHOW VARIABLES LIKE 'validate_password%';
Controller (haproxy host) | My-sql-master-1 | My-sql-master-2 |
---|---|---|
10.0.0.2:3000 | 10.0.0.109:3306 | 10.0.0.159:3306 |
- On both Masters, create a user haproxy_check without password
create user 'haproxy_check'@'10.0.0.2';
FLUSH PRIVILEGES;
-
If it does not respect the password policy, you should change the policy by adding into
/etc/my.cnf
under [mysqld]-
validate_password.policy=LOW validate_password.length=0 validate_password.mixed_case_count=0 validate_password.number_count=0 validate_password.special_char_count=0 max_connections=10000 # this is in order to not block the db in case of invalid password
-
restart mysqld
systemctl restart mysqld
-
you can see if it works by entering in your controller :
mysql -h 10.0.0.109 -u haproxy_check -p -e "SHOW DATABASES"
Delete everything in the configuration file /etc/haproxy/haproxy.cfg
and replace it by :
- find more informations about the defaults and global fields here
- Unlike HTTP load balancing HAProxy doesn’t have a specific “mode” for MySQL so we use tcp.
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
defaults
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000
#---------------------------------------------------------------------
# Load Balancing system for my_sql and my_sql back openstack
# instances at 10.0.0.109 and 10.0.0.159
#---------------------------------------------------------------------
listen my_load_balancer
bind 10.154.0.2:3000 # listening address
mode tcp # for mysql
option mysql-check user haproxy_check # specify the user created previously
default-server fastinter 1000 # the default check interval is 2000ms
balance roundrobin # alternate between hosts up, alternatives : lessconn
server my_sql_first 10.0.0.109:3306 check # sql addresses
server my_sql_back 10.0.0.159:3306 check # sql addresses
#---------------------------------------------------------------------
# Load Balancing logs used to check the haproxy logs if you want :)
#---------------------------------------------------------------------
#listen 0.0.0.0:9090
# mode http
# stats enable
# stats uri /
# stats realm Strictly\ Private
# stats auth A_Username:Akram
# stats auth Another_User:AkramBis
- After editing
/etc/haproxy/haproxy.cfg
, restart thehaproxy
service for the changes to take effect:
systemctl restart haproxy
- You can also check if your configuration is valid by using :
haproxy -f /etc/haproxy/haproxy.cfg
Tutorial here
Avoir 3 machines sur Ubuntu avec un user nommé vpn, qui a les droits root
adduser vpn
usermod -aG sudo vpn
Durant tout le tutoriel, il sera considéré que le user est en permanence vpn, quelle que soit la machine.
Une de ces machines sera appelée tout au long du tuto "server" une autre, "client", et enfin la dernière "certificate authority" (CA) - Le server doit se trouver sur le même sous-réseau que les machines du cloud privé (pour nous, sur GCP, dans le sous-réseau 10.154.0.0/24) - Le client doit se trouver sur le même sous-réseau que les machines du cloud publique (pour nous, sur AWS, dans le sous-réseau 10.0.0.0/24) - La CA peut être à peu près n’importe où, mais il reste plus facile et logique qu’elle soit sur le même sous-réseau que le server
Il faudra beaucoup switch entre les différentes machines. Pour faciliter la lecture, le nom de la machine sera marqué en gras avant chaque switch ou début d’étape.
Le server doit pouvoir se connecter en ssh aux machines CA et client. Pour cela, utilisez la commande suivante sur la machine server
ssh-keygen
Les fichiers ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub sont alors générés. Copiez le contenu du fichier ~/.ssh/id_rsa.pub Allez sur la machine pour faire la même commande CA
ssh-keygen
Les mêmes fichiers sont générés. Ajoutez le fichier authorized_keys et collez la clef publique du server, préalablement copiée.
emacs ~/.ssh/authorized_keys
Enregistrez et fermez le fichier une fois cela fait.
Copiez ensuite la clef publique de la CA et collez là dans le fichier authorized_keys du server.
Effectuez la même opération d’échange des clefs entre le server et le client.
Pour tester si tout fonctionne, on essaie de se connecter en ssh depuis le server.
ssh vpn@ClientIp
exit
ssh vpn@CAIp
exit
Commençons par l’installation d’openvn côté server
sudo apt update
sudo apt install openvpn
Openvpn fonctionne grâce à un chiffrage des données. Il nous faut donc une autorité qui puisse nous donner des certificats de confiance. Bref, autant la build nous-même.
Installons donc EasyRsa sur les machines server et CA
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
cd ~/
tar xvf EasyRSA-3.0.4.tgz
La version 3.0.4 n’est potentiellement pas la dernière. Consultez la page https://github.com/OpenVPN/easy-rsa/releases afin de prendre la version qui vous convient.
Nous allons configurer EasyRsa sur la CA en premier
cd ~/EasyRSA-3.0.4/
cp vars.example vars
emacs vars
Trouvez les lignes :
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
Et les décommenter (vous pouvez mettre des valeurs appropriées dans les champs, cela ne change rien à la suite, ici, je laisse les valeurs par défaut pour le tuto) :
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "San Francisco"
set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "My Organizational Unit"
Cela fait, enregistrez et quittez le fichier.
On va maintenant pouvoir lancer le script d’initialisation
./easyrsa init-pki
Output:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/vpn/EasyRSA-3.0.4/pki
Puis build
./easyrsa build-ca nopass
Dans la sortie, il vous sera demandé de confirmer le nom commun ou common name de votre CA :
Output:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
On peut y mettre ce que l’on veut, mais ici, on va simplement appuyer sur entrée pour valider le nom par défaut.
On a maintenant une CA.
Maintenant que l’on a une CA, il est temps de s’en servir.
Retournons sur le server pour initialiser EasyRsa
cd ~/EasyRSA-3.0.4/
./easyrsa init-pki
Puis, on utilise l’option gen-req, suivie du nom de la machine, ici, on choisit "server"
./easyrsa gen-req server nopass
Une clef privée est alors créée, ainsi qu’un fichier server.req, contenant une demande de certificat.
Le but va maintenant être de faire signer ce certificat par la CA, puis, de le reprendre.
sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/
scp ~/EasyRSA-3.0.4/pki/reqs/server.req vpn@your_CA_ip:/tmp
Le fichier est maintenant dans le dossier tmp de la CA. Allons sur la CA pour y signer le certificat et le renvoyer
cd ~/ EasyRSA-3.0.4/
./easyrsa import-req /tmp/server.req server
./easyrsa sign-req server server
Dans la sortie, il vous sera demandé de vérifier que la demande provient d'une source fiable. Tapez yes puis enter pour confirmer :
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 3650 days:
subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Il faut ensuite retransférer le certificat signé
scp pki/issued/server.crt vpn@your_server_ip:/tmp
scp pki/ca.crt vpn@your_server_ip:/tmp
De retour sur le server, il reste à créer la clef.
L’opération peut prendre quelques minutes, c’est normal.
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
cd ~/EasyRSA-3.0.4/
./easyrsa gen-dh
openvpn --genkey --secret ta.key
sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/
Normalement, à cette étape, la configuration des certificats est terminée. On peut passer à la création de paires de clef pour communiquer avec le client.
Sur le server, nous allons créer une paire, puis l’envoyer à la CA pour qu’elle la signe
mkdir -p ~/client-configs/keys
chmod -R 700 ~/client-configs
cd ~/EasyRSA-3.0.4/
./easyrsa gen-req client1 nopass
cp pki/private/client1.key ~/client-configs/keys/
scp pki/reqs/client1.req vpn@your_CA_ip:/tmp
Une fois sur la machine CA, on signe donc, puis on renvoie le fichier.
cd EasyRSA-3.0.4/
./easyrsa import-req /tmp/client1.req client1
./easyrsa sign-req client client1
Output:
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
scp pki/issued/client1.crt vpn@your_server_ip:/tmp
De retour sur le server, on récupère le fichier
cp /tmp/client1.crt ~/client-configs/keys/
cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Toujours sur le server, commençons la configuration du service ovpn
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo emacs /etc/openvpn/server.conf
trouvez la ligne suivante
tls-auth ta.key 0 # This file is secret
Cette ligne devrait déjà être décommentée, mais si elle ne l’est pas, enlevez le ';' devant afin de la décommenter.
Même chose avec la ligne
cipher AES-256-CBC
Juste après cette ligne, ajoutez
auth SHA256
Trouvez ensuite la ligne commençant par "dh". Si nécessaire, modifiez le nom de fichier indiqué ici en supprimant le 2048 afin qu'il s'aligne sur la clé que vous avez générée à l'étape précédente.
dh dh.pem
Enfin, décommentez les lignes
user nobody
group nogroup
en enlevant le ';' au début de chaque ligne.
Le fichier de configuration est opérationnel à ce moment. Toutefois, il est encore possible de le personnaliser un peu.
Nous avons choisi de changer le protocole udp en tcp. Changez les lignes
proto udp
port 1194
explicit-exit-notify 1
pour les lignes
proto tcp
port 443
explicit-exit-notify 0
Vous pouvez enregistrer et fermer le fichier.
Toujours sur la machine server
sudo emacs /etc/sysctl.conf
décommentez la ligne
net.ipv4.ip_forward=1
en enlevant le '#' en début de ligne.
Enregistrez et fermez le fichier. Puis lancez le pour prendre en compte les modifications ajoutées.
sudo sysctl -p
L'output devrait contenir
net.ipv4.ip_forward = 1
Lancez la commande
ip route | grep default
L’output doit être de la forme
default via 203.0.113.1 dev interface_name proto static
Retenez l'interface_name. Nous allons maintenant utiliser ufw pour rediriger le trafic
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
ouvrez le fichier before rules
sudo emacs /etc/ufw/before.rules
En haut du fichier, ajoutez les lignes mises en évidence ci-dessous
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
#################################### START OPENVPN RULES ###################################
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to interface_name (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o interface_name -j MASQUERADE
COMMIT
##################################### END OPENVPN RULES ####################################
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Enregistrez et fermez le fichier, puis, ouvrez le fichier
sudo emacs /etc/default/ufw
À l'intérieur, trouvez la directive
DEFAULT_FORWARD_POLICY DROP
et changez la valeur de "DROP" à "ACCEPT"
DEFAULT_FORWARD_POLICY="ACCEPT"
Enregistrez et fermez le fichier, puis, redémarrez ufw.
sudo ufw disable
sudo ufw enable
La configuration réseau devrait à présent être suffisante pour gérer le trafic d’OpenVPN.
Nous pouvons enfin démarrer le service OpenVPN du server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server
l’output devrait mentionner
active (running)
La ligne suivante permet de démarrer le service au démarrage de la machine
sudo systemctl enable openvpn@server
Toujours sur le server
mkdir -p ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
emacs ~/client-configs/base.conf
Changez l’adresse et le port de votre server
#The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 443
changez le protocole de udp à tcp
proto tcp
Ensuite, décommentez les directives user et group en supprimant le ';' au début de chaque ligne :
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Trouvez les directives qui fixent ca, cert et key. Commentez ces directives, car vous ajouterez bientôt les certificats et les clés dans le dossier lui-même
#ca ca.crt
#cert client.crt
#key client.key
De même, commentez la directive tls-auth, car vous ajouterez ca.key directement dans le fichier de configuration du client
#tls-auth ta.key 1
Les lignes cipher et auth doivent avoir les mêmes paramètres que dans le fichier /etc/openvpn/server.conf
cipher AES-256-CBC
auth SHA256
ajoutez les lignes suivantes à la fin du fichier, suivies d’un retour à la ligne.
key-direction 1
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Enregistrez et fermez le fichier.
Créez le fichier
emacs ~/client-configs/make_config.sh
ajoutez les lignes suivantes
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
\> ${OUTPUT_DIR}/${1}.ovpn
Enregistrez et fermez le fichier, puis, marquez le en tant exécutable :
chmod 700 ~/client-configs/make_config.sh
Toujours sur le server
cd ~/client-configs
sudo ./make_config.sh client1
ls ~/client-configs/files
Output:
client1.ovpn
Ensuite, il faut envoyer ce fichier de configuration au client.
scp ~/client-configs/files/client1.ovpn vpn@your_client_ip:/tmp
Maintenant, il faut se rendre sur la machine client, à laquelle on vient d'exporter le fichier de conf.
sudo cp /tpm/client1.ovpn ~/client1.ovpn
sudo apt update
sudo apt install openvpn
sudo yum install epel-release
sudo yum install openvpn
ls /etc/openvpn
Output:
update-resolv-conf
lancez la commande
sudo openvpn --config client1.ovpn --daemon
La connexion est maintenant établie. Les deux machines devraient être sur le même sous-réseau 10.8.0.0/24 Pour tester, lancez la commande
ping 10.8.0.1
On devrait obtenir des réponses de la part du server.
- vpn client (aws) :
sudo systemctl start openvpn
sudo openvpn --config client2.ovpn --daemon
- vpn server (gcp) :
sudo su - vpn
sudo iptables-restore < iptables.save # /!\ une fois la connexion etablie /!\
-
vpn Client(aws):
sudo systemctl restart haproxy # /!\ une fois ip-tables forward /!\
Service: EC2>Load Balancing>Load Balancers
- Configure Load Balancer
- Click on Create Load Balancer
- Click on Application Load Balancer
- Set its name
- in Availability Zone select your VPC and your 2 Subnets both in DIFFERENT Availability Zone
- Click next
- Configure Security Settings
- Click next (there's a security warning telling us we don't use https, this is normal)
- Configure Security Groups
- click on select an existing security group
- select the previously created security group
- Configure Routing
- Select New target group
- Set a Name
- Target type = instance, http, port 80
- Click on advanced health check settings if you want to change them (Optional)
- Register Target
- Click on next (the target will be set when we will create the AutoScaling Group)
- Click on Create
Service: EC2>Auto Scaling>Launch Configuration
-
Set a Name
-
Select your VM image in AMI (ubuntu-with-wp-configured)
-
Select your instance type (t2.micro for free tier)
-
Click on Advanced details and select assign a public IP to all instances you can also enter you installation script into the user data.
#!/bin/bash sudo sed -i -e "s/34.89.33.35:3306/IP-VPN-client:443/g" /var/www/html/wp-config.php sudo sed -i -e "s/define( 'WP_DEBUG', false );/define( \'WP_DEBUG\', false );\ndefine( \'WP_HOME\',\'http:\/\/ELB-DNS-ADRESS\/\' );\ndefine( \'WP_SITEURL\', \'http:\/\/ELB-DNS-ADRESS\/\' );/g" /var/www/html/wp-config.php sudo systemctl stop apache2 sudo systemctl start apache2
-
Select an existing security group and select the previously created security group
-
Select an existing key pair, then select your key
Service: EC2>Auto Scaling>Auto Scaling group
- Click on Change to a launch configuration and select the launch configuration
- Select your VPC and its subnets click next
- attach to an existing load balancer and Select the security group
- state verification tick ELB and set the period to 30s if you want faster health check for testing
- select the number of instances 2,2,2 with no stategy, click next until you create an ASG
sudo apt update
sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql unzip
sudo a2enmod rewrite
sudo vim /etc/apache2/sites-available/wordpress.conf
And write inside
<VirtualHost *:80>
ServerName wordpress.localhost
DocumentRoot /var/www/wordpress
<Directory /var/www/wordpress>
AllowOverride all
Require all granted
</Directory>
ErrorLog /var/log/apache2/error.wordpress.log
CustomLog /var/log/apache2/access.wordpress.log combined
</VirtualHost>
And then
sudo a2ensite wordpress
sudo systemctl reload apache2
wget https://fr.wordpress.org/wordpress-latest-fr_FR.zip
sudo unzip wordpress-latest-fr_FR.zip -d /var/www
sudo chown www-data:www-data /var/www/wordpress -R
sudo chmod -R 777 /var/www/wordpress
Open mysql and
create database wordpress;
create user 'wordpress'@'%' identified by 'Admin123#';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
QUIT;
Give DB informations and it will work !
define('WP_HOME','http://<public-ip>');
define('WP_SITEURL','http://<public-ip>');