Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions pages/ipam/reference-content/ipv6.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ content:
paragraph: Learn about IPv6 at Scaleway - configuration, routing, security, and best practices for seamless integration and scalability. Transition smoothly with our step-by-step guide.
tags: ipv6 ipv4 support
dates:
validation: 2024-11-18
validation: 2025-05-27
posted: 2024-11-18
categories:
- network
Expand All @@ -27,7 +27,7 @@ This is where **IPv6** comes in, the most recent version of the IP protocol. Eac

Written in human-readable form, an IPv6 address can be shown as eight groups of four hexadecimal digits, each group representing 16 bits and separated by a colon, e.g. `2001:0DB8:0000:0003:0000:01FF:0000:002E`. This can also be notated as `2001:DB8::3:0:1FF:0:2E`.

As well as providing a much bigger address space, IPv6 also includes a built-in network security layer (IPsec), as well as improved features for reliability and efficiency, like autoconfiguration, streamlined headers and improved Quality of Service (QoS). All leading to a more robust and secure protocol, that can potentially offer lower latency and faster data transfer.
As well as providing a much bigger address space, IPv6 also includes a built-in network security layer (IPsec), as well as improved features for reliability and efficiency, like auto-configuration, streamlined headers and improved Quality of Service (QoS). All leading to a more robust and secure protocol, that can potentially offer lower latency and faster data transfer.

## IPv6-compatible products

Expand All @@ -54,6 +54,7 @@ Go further with Instances and IPv6 in the following documentation:
- [Using routed IPs](/instances/api-cli/using-routed-ips/)
- Fix lost IPv6 connectivity when migrating to routed IP for old [Debian Buster images](/instances/troubleshooting/fix-lost-ip-connectivity-on-debian-buster/) or [RHEL images](/instances/troubleshooting/fix-unreachable-ipv6-rhel-based-instance/)
- [Fix DNS resolution with a routed IPv6-only setup on Debian Bullseye](/instances/troubleshooting/fix-dns-routed-ipv6-only-debian-bullseye/)
- [Setting a reverse IPv6 DNS record via the IPAM API](/ipam/api-cli/set-ip-reverse/)

### Elastic Metal and IPv6

Expand Down Expand Up @@ -113,11 +114,15 @@ Go further with IPv6 and Load Balancers with the following documentation:

VPC and Private Networks are compatible with IPv6.

- Private Networks are dual-stack, meaning each Private Network necessarily has both an IPv4 and and an IPv6 CIDR blocks.
- Private Networks are dual-stack, meaning each Private Network necessarily has both IPv4 and and IPv6 CIDR blocks.
- For IPv6, this is a `/64` block, automatically created by Scaleway, guaranteed to be unique within the VPC and not overlapping with any of your other Private Networks.
- All IPv6-compatible resources will automatically receive an IPv6 address when they join a Private Network, in addition to an IPv4 address.
- This address can be auto-allocated from the pool, or specified by the user via a [reserved IP address](/ipam/how-to/reserve-ip/)
- Scaleway VPC routing supports both IPv4 and IPv6 protocols. [Managed routes](/vpc/how-to/manage-routing/#how-to-generate-a-managed-route) to Private Networks are simultaneously generated for both IPV4 and IPV6, and both are added to the VPC's route table. Note that auto-generated managed routes to Public Gateways are only created in IPv4, since Public Gateways are not yet IPv6-compatible. [Custom routes](/vpc/how-to/manage-routing/#how-to-create-a-custom-route) are only created for the IP type specified during the creation process.
- Scaleway VPC routing supports both IPv4 and IPv6 protocols. [Managed routes](/vpc/how-to/manage-routing/#how-to-generate-a-managed-route) to Private Networks are simultaneously generated for both IPv4 and IPv6, and both are added to the VPC's route table. Note that auto-generated managed routes to Public Gateways are only created in IPv4, since Public Gateways are not yet IPv6-compatible. [Custom routes](/vpc/how-to/manage-routing/#how-to-create-a-custom-route) are only created for the IP type specified during the creation process.

### InterLink and IPv6

InterLink supports both IPv4 and IPv6 traffic. Each InterLink entails two BGP sessions: one for IPv4 and one of IPv6, whereby routing information is dynamically exchanged between the external router and the Scaleway VPC vRouter. When creating a [routing policy](/interlink/concepts/#routing-policy) for your InterLink, you must separately specify the IPv4 and IPv6 routes to propagate.

### Serverless Functions and Containers and IPv6

Expand Down
6 changes: 3 additions & 3 deletions pages/load-balancer/how-to/add-certificate.mdx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
meta:
title: How to add a certificate to your Load Balancer
description: This page explains how to add a certificate to your Load Balancer
description: Learn how to add an SSL/TLS certificate to your Scaleway Load Balancer to enable secure HTTPS traffic for your services
content:
h1: How to add a certificate to your Load Balancer
paragraph: This page explains how to add a certificate to your Load Balancer
paragraph: Learn how to add an SSL/TLS certificate to your Scaleway Load Balancer to enable secure HTTPS traffic for your services
dates:
validation: 2024-11-18
validation: 2025-05-27
posted: 2022-10-20
---

Expand Down
33 changes: 23 additions & 10 deletions tutorials/bind-dns-server/index.mdx
Original file line number Diff line number Diff line change
@@ -1,44 +1,55 @@
---
meta:
title: Implementing a DNS server using BIND
description: In this tutorial you will learn How to implement a DNS server using BIND.
description: Learn how to install and configure a BIND DNS server on a Scaleway Instance to manage domain name resolution.
content:
h1: Implementing a DNS server using BIND
paragraph: In this tutorial you will learn How to implement a DNS server using BIND.
paragraph: Learn how to install and configure a BIND DNS server on a Scaleway Instance to manage domain name resolution.
tags: dns bind
categories:
- domains-and-dns
dates:
validation: 2024-11-18
validation: 2025-05-27
posted: 2018-12-05
---

DNS (Domain Name System) is a service that translates the IP address of computers connected to the internet into human-readable domain names, and vice versa. In an environment with a limited amount of Linux machines, it is possible to use the `/etc/hosts` file for associating an IP address to a DNS name. But when you have a large infrastructure with lots of systems/resources, `/etc/hosts` may quickly become cumbersome.

[BIND](https://www.isc.org/bind/) or Berkeley Internet Name Domain is open-source software that implements DNS protocols for the internet. In this tutorial, we need a DNS server machine & a client machine for testing.
[BIND](https://www.isc.org/bind/) or Berkeley Internet Name Domain is open-source software that implements DNS protocols for the internet. In this tutorial, we need primary and secondary DNS server machines, in accordance with best practice to ensure redundancy. We also need a third machine (e.g. your local machine) for testing.

<Macro id="requirements" />

- A Scaleway account logged into the [console](https://console.scaleway.com)
- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
- Two [Instances](/instances/how-to/create-an-instance/) running Ubuntu, to act as the primary and secondary DNS server machines
- A local machine, or a third Instance, to test from
- An [SSH key](/organizations-and-projects/how-to/create-ssh-key/)
- `sudo` privileges or access to the root user

## Installing BIND

1. Install the latest version of BIND 9.20 and related tools:
1. Connect to the Instance that will act as the primary DNS server using [SSH](/instances/how-to/connect-to-instance/):
```
ssh root@<your_instance_ip>
```

2. Update the `apt` package manager and upgrade the software already installed on the Instance to the latest version, available in Ubuntu's repositories:
```
apt update && apt upgrade -y

3. Install the latest version of BIND 9.18 and related tools:
```
apt-get install bind9 bind9utils bind9-doc dnsutils
```
2. Verify the installed version:
4. Verify the installed version:
```
named -v
```
The expected output should be:
```
BIN 9.20.x
BIND 9.18.x
```

5. Repeat the above steps on the secondary DNS server Instance.

## Configuring the primary DNS server

Expand Down Expand Up @@ -138,6 +149,8 @@ DNS (Domain Name System) is a service that translates the IP address of computer

### Testing the Configuration

Carry out the following steps on a third machine, e.g. your local machine or another Instance.

1. Check the primary DNS server:
```bash
dig @192.0.2.1 www.example.com
Expand Down Expand Up @@ -169,6 +182,6 @@ DNS (Domain Name System) is a service that translates the IP address of computer

## Conclusion

You have successfully configured a DNS server using BIND 9.20. You can now resolve domain names within your infrastructure or serve DNS queries to external clients.
You have successfully configured a redundant DNS server using BIND 9.18. You can now resolve domain names within your infrastructure or serve DNS queries to external clients.

For more advanced configurations and features, refer to the [official BIND 9.20 documentation](https://kb.isc.org/docs/isc-bind-9).
For more advanced configurations and features, refer to the [official BIND documentation](https://kb.isc.org/docs/isc-bind-9).
2 changes: 1 addition & 1 deletion tutorials/configure-nodemcu-iot-hub/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ content:
categories:
- iot-hub
dates:
validation: 2024-11-18
validation: 2025-05-27
tags: iot iot-hub NodeMCU Arduino-IDE
hero: assets/scaleway_nodemcu.webp
---
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
128 changes: 18 additions & 110 deletions tutorials/configuring-loadbalancer-wordpress/index.mdx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
meta:
title: Setting up a load-balanced WordPress
description: This page shows you how to set up a load-balanced WordPress for increased availability
description: Set up a Scaleway Load Balancer for WordPress to improve performance, ensure high availability, and handle traffic efficiently.
content:
h1: Setting up a load-balanced WordPress
paragraph: This page shows you how to set up a load-balanced WordPress for increased availability
paragraph: Set up a Scaleway Load Balancer for WordPress to improve performance, ensure high availability, and handle traffic efficiently.
categories:
- load-balancer
- instances
tags: WordPress Load-Balancer
dates:
validation: 2024-11-18
validation: 2025-05-27
posted: 2019-04-08
---

Expand Down Expand Up @@ -45,111 +45,19 @@ Load Balancer supports private IPs of Scaleway Instances for backend servers, al

## Configuring a Load Balancer

1. Click **Load Balancer** in the menu on the left, to enter the Load Balancer section, then click **+ Create a Load Balancer**:
<Lightbox src="scaleway-lb-console.webp" alt="" />
2. Enter the **Name** of the Load Balancer, optionally you can enter a description and tags to simplify the management of them. Choose the **Region** for the Load Balancer (it should be the same region as the geographical region of your Instances), and a new IP address is allocated automatically.1. Click **Load Balancer** in the menu on the left, to enter the Load Balancer section, then click **+ Create a Load Balancer**:
<Lightbox src="scaleway-lb-console.webp" alt="" />
3. Enter the **Name** of the Load Balancer, optionally you can enter a description and tags to simplify the management of them. Choose the **region** for the Load Balancer (it should be the same region as the geographical region of your Instances), and a new IP address is allocated automatically.
4. Configure a backend rule, this rule defines the backend infrastructure that will be load-balanced.
1. Follow the instructions for [creating a Load Balancer](/load-balancer/how-to/create-load-balancer/#how-to-create-a-load-balancer), with the following settings:
- The same Availability Zone as your Instances
- A frontend listening on port 80
- A backend using HTTP protocol, listening on port 80
<Message type="tip">
It is also possible to use [SSL to encrypt backend connections](/tutorials/nginx-reverse-proxy/), in this case, set the port to 443.|
</Message>
- TLS encryption activated on the backend
- Proxy protocol deactivated on the backend
- The two WordPress Instances (`10.45.2.3` and `10.45.2.3`) as backend server IPs
- HTTP health check

The following parameters should be configured in the backend rule:

|Parameter|Description|
|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
|**Backend Name**|A name for the backend rule (e.g. `wordpress-backend-rule`)|
|**Protocol**|The protocol to use. Set this value to `HTTP`, to have access to HTTP-specific features of the Load Balancer|
|**Port**|The port on which the backend application listens, with a standard configuration is **port 80** for a web application. It is also possible to use [SSL to encrypt backend connections](/tutorials/nginx-reverse-proxy/), in this case, set the port to 443.|
|**Proxy**|This enables or disables PROXY protocol version 2 (must be supported by backend servers). It is not required for this tutorial, keep it off.|
|**TLS encryption**|Enable Transport Layer Security (TLS) to encrypt connections between the Load Balancer and the backend server(s).|
|**Health Check Type**|The health check type to use. To check the health of a web application, set this to `HTTP`.|
|**Server IPs**|Add the two WordPress Instances (`10.45.2.3` and `10.45.2.3`) to the list of backend servers|

The final backend rule should look similar to the following example:

<Lightbox src="scaleway-lb-backend-rule.webp" alt="" />
5. Click **Create a Load Balancer** to deploy the Load Balancer.

## Checking if the Load Balancer works

It is possible to check the status of the Load Balancer with an API call.
It will provide you with information about the status of the Load Balancer and if the health check was successful.

<Message type="important">
Retrieve your Organization ID and generate [API key](/iam/how-to/create-api-keys/) from your [management console](https://console.scaleway.com/project/credentials) before you continue.
</Message>

1. Set the required variables to make the API call easier:
```bash
LB_ID="<LOAD_BALANCER_ID>"
TOKEN="<API_SECRET_KEY>"
REGION="<REGION>" # (can be either fr-par or nl-ams, depending on the load balancers region)
```
2. When the Load Balancer is configured and running, type the following command to request its status. Make sure that [jsonpp](https://jmhodges.github.io/jsonpp/) is installed on the machine running the above command to get an easily readable JSON output:
```bash
curl -X GET "https://api.scaleway.com/lb/v1/regions/$REGION/lbs/$LB_ID/stats" -H "X-Auth-Token: $SECRET_KEY" | json_pp
```
3. The API will provide a [JSON formatted](https://en.wikipedia.org/wiki/JSON) response like the following example:
```json
{
"backend_servers_stats": [
{
"ip": "10.45.2.3",
"backend_id": "cd64b4e0-2c23-484a-80b9-602bf934245e",
"instance_id": "4d2294bf-4e6d-499c-922a-ca08f58ed66d",
"server_state_changed_at": "2019-04-10T13:01:27Z",
"server_state": "stopped",
"last_health_check_status": "failed"
},
{
"server_state": "stopped",
"server_state_changed_at": "2019-04-10T13:01:27Z",
"instance_id": "4d2294bf-4e6d-499c-922a-ca08f58ed66d",
"ip": "10.45.2.4",
"backend_id": "cd64b4e0-2c23-484a-80b9-602bf934245e",
"last_health_check_status": "unknown"
},
{
"instance_id": "bd4b6e5f-2cfb-40da-afd8-933e7afbbd61",
"server_state_changed_at": "2019-04-10T13:01:27Z",
"server_state": "running",
"backend_id": "cd64b4e0-2c23-484a-80b9-602bf934245e",
"ip": "10.45.2.3",
"last_health_check_status": "passed"
},
{
"ip": "10.45.2.4",
"backend_id": "cd64b4e0-2c23-484a-80b9-602bf934245e",
"instance_id": "bd4b6e5f-2cfb-40da-afd8-933e7afbbd61",
"server_state_changed_at": "2019-04-10T13:01:27Z",
"server_state": "running",
"last_health_check_status": "passed"
}
]
}
```

As two Instances are configured in the backend, the JSON list contains four entries. This is due to the high availability feature of the Load Balancer. Should the master Instance experience a failure, it switches automatically to the backup one.

In the status of the `running` instance, the health check status (`last_health_check_status`) has `passed`. This means that the backend Instance replied well to the request sent to it in the health check. Requests to WordPress are load-balanced between the two Instances.
4. Connect to the first WordPress Instance (`10.45.2.3`) and stop the web server application running on it:
```bash
systemctl stop nginx.service
```
5. Re-run the command from Step 3.
6. In the JSON list, the `last_health_check_status` changed to `failed`, as the web server no longer replies to requests:
```json
{
"last_health_check_status": "failed",
"server_state": "stopped",
"instance_id": "bd4b6e5f-2cfb-40da-afd8-933e7afbbd61",
"ip": "10.45.2.3",
"server_state_changed_at": "2019-04-10T13:32:18Z",
"backend_id": "cd64b4e0-2c23-484a-80b9-602bf934245e"
}
```

When you navigate to the load-balanced IP (`http://51.51.51.51`) in your browser, your WordPress displays. The Load Balancer has automatically detected that the Nginx server on the first Instance (`10.45.2.3`) is not running anymore and redirects all traffic to the second Instance (`10.45.2.3`).
7. Restart the web server application and re-run the command mentioned in step 3. The `last_health_check_status` will change again into `passed` and requests are load balanced again between the two Instances.
2. Check the status of your Load Balancer's backend servers in the Scaleway console, by navigating to the Load Balancer's dashboard, then **Backends** > **Backend name** > **Server list**, where you can see the status of each server depending on its health check result.

## Configuring WordPress

Expand Down Expand Up @@ -183,11 +91,11 @@ Update the configuration of each Instance now, so they will use the database on
When connecting to the Instance from a web browser, the content is taken from the database on the MariaDB server.
3. Log into the WordPress Admin interface and click **Settings** to configure WordPress.
- Enter the IP of one of your WordPress Instances (`10.45.2.3`) in the field **WordPress Address (URL)**
- Enter the **Load Balanced IP** (`51.51.51.51`) or your domain name in the field **Site Address (URL)**
- Enter the **Load Balancer's public (flexible) IP address** (`51.51.51.51`) or your domain name in the field **Site Address (URL)**

Save the form.
4. Redo this step on the second instance.
5. Type the **Load Balanced IP** or your domain name in your browser, and WordPress will appear on the load balanced IP:
5. Type the **Load Balancer's public (flexible) IP address** or your domain name in your browser, and WordPress will appear :
<Lightbox src="scaleway-lb-wp-lbip.webp" alt="" />

The Load Balancer is now automatically distributing the load between your Instances. To increase the computing power of the Load Balancer, simply snapshot an Instance and spin up a new one.
The Load Balancer is now automatically distributing the load between your Instances. To increase the computing power of the Load Balancer, simply [snapshot](/instances/concepts/#snapshot) an Instance and spin up a new one.