NewsBlur/archive/hetzner migration.md
2024-02-25 20:02:50 -05:00

1.8 KiB
Raw Blame History

Migration from Digital Ocean to Hetzner, covering about 120 servers (20 db, 80 task, 20 app)

Tweet

"Time for a big server transition. Im moving the servers from Digital Ocean to Hetzner. Every database server (postgresql, mongo, redis x 4, elasticsearch, prometheus, consul, and sentry) is making the move. Im going to do it all at once, which means about an hour of downtime."

"Afterwards, you shouldn't notice anything different, although these are bare metal servers, so theoretically they should be faster and more reliable."

make maintenance_on
make celery_stop

Postgres

Edit postgres/consul_service.json: db-postgres2 -> hdb-postgres-1

aps -l db-postgres2,hdb-postgres-1,hdb-postgres-2 -t consul
aps -l hdb-postgres-1 -t pg_promote

Mongo

sshdo db-mongo-primary1
sudo docker exec -it mongo mongo
rs.config()
rs.reconfig()

Mongo analytics

Edit mongo/tasks/main.yml: mongo_analytics_secondary

aps -l db-mongo-analytics2,hdb-mongo-analytics-1 -t consul

Redis

Edit redis/tasks/main.yml: redis_secondary

aps -l hdb-redis-user-1,hdb-redis-user-2,db-redis-user -t consul
aps -l hdb-redis-session-1,hdb-redis-session-2,db-redis-sessions -t consul
aps -l hdb-redis-story-1,hdb-redis-story-2,db-redis-story1 -t consul
aps -l hdb-redis-pubsub,db-redis-pubsub -t consul
apd -l hdb-redis-user-1,hdb-redis-session-1,hdb-redis-story-1,hdb-redis-pubsub -t replicaofnoone

Elasticsearch

Edit elasticsearch/tasks/main.yml: elasticsearch_secondary

aps -l db-elasticsearch1,hdb-elasticsearch-1 -t consul

Eventually MUserSearch.remove_all()

Test hwww.newsblur.com

ansible-playbook ansible/deploy.yml -l happ-web-01 --tags maintenance_off

Looks good? Launch

Haproxy on DO to redirect to Hetzner

aps -l www -t haproxy

Change DNS to point to Hetzner

make maintenance_off