NOTE
consul
1. What it is A component for service registration and discovery 2. Building a local cluster 2.1. Download 2.2. Configuration files 2.2.1. Create directories 2.2.2. Configuration files server1 server2 server3 2.3. Start 2.4. Test Add service configuration Add service web UI 3. References
This is a historical learning note and may contain outdated or incomplete understanding.
1. What It Is
A component for service registration and discovery.
2. Building a Local Cluster
2.1. Download
2.2. Configuration Files
2.2.1. Create Directories
mkdir -p conf/{node1,node2,node3}
mkdir -p data/{node1,node2,node3}
2.2.2. Configuration Files
- server1
{
"datacenter": "dc1",
"data_dir": "C:\\software\\consul_1.7.2\\data\\node1",
"log_level": "INFO",
"server": true,
"node_name": "node1",
"ui": true,
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 3,
"ports":{
"http": 8500,
"dns": 8600,
"server": 8300,
"serf_lan": 8301,
"serf_wan": 8302
}
}
- server2
{
"datacenter": "dc1",
"data_dir": "C:\\software\\consul_1.7.2\\data\\node2",
"log_level": "INFO",
"server": true,
"node_name": "node2",
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 3,
"ports":{
"http": 8510,
"dns": 8610,
"server": 8310,
"serf_lan": 8311,
"serf_wan": 8312
}
}
- server3
{
"datacenter": "dc1",
"data_dir": "C:\\software\\consul_1.7.2\\data\\node3",
"log_level": "INFO",
"server": true,
"node_name": "node3",
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 3,
"ports":{
"http": 8520,
"dns": 8620,
"server": 8320,
"serf_lan": 8321,
"serf_wan": 8322
}
}
2.3. Start
- server1
consul agent -config-dir C:\\software\\consul_1.7.2\conf\\node1
- server2
consul agent -config-dir C:\\software\\consul_1.7.2\conf\\node2 -retry-join=127.0.0.1:8301
- server3
consul agent -config-dir C:\\software\\consul_1.7.2\conf\\node3 -retry-join=127.0.0.1:8301
2.4. Test
- Add a service configuration file
{
"service": {
"name": "web",
"tags": ["master"],
"address": "127.0.0.1",
"port": 10000,
"checks": [
{
"http": "http://localhost:10000/health",
"interval": "10s"
}
]
}
}
- Add a service
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Println("hello Web3! This is n3 or n2")
fmt.Fprintf(w, "Hello Web3! This is n3 or n2")
}
func healthHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("health check! n3 or n2")
}
func main() {
http.HandleFunc("/", handler)
http.HandleFunc("/health", healthHandler)
http.ListenAndServe(":10000", nil)
}
- web UI
Discussion
Sign in with GitHub to comment. Discussions are stored as GitHub Issues.View on GitHub