摘要:如果是單服務(wù),在更新的過程中勢必會出現(xiàn)服務(wù)不可用的狀態(tài)。負(fù)載均衡配置守護(hù)進(jìn)程使用守護(hù)進(jìn)程軟件來管理服務(wù),包括啟動暫停重啟等操作部署腳本部署腳本也很簡單,總的思路就是循環(huán)關(guān)掉其中一個服務(wù),更新,然后再重新開啟。
筆者很想有 Go 的實戰(zhàn)項目經(jīng)驗,無奈目前公司暫未給出實戰(zhàn)機(jī)會,所以只得在自己的博客項目上折騰一番。之前博客是用 PHP 的 Laravel 寫的,前段時間將其后端全部用 Go 重寫了一遍,然后在部署上栽了坑。
如果是單服務(wù),在更新的過程中勢必會出現(xiàn)服務(wù)不可用的狀態(tài)。不像 PHP 這種無需編譯的語言,直接將代碼文件覆蓋即可。
只有一臺服務(wù)器,那么就只能起兩個或以上的服務(wù),用 Nginx 來實現(xiàn)簡單的負(fù)載均衡。
Nginx 負(fù)載均衡配置upstream blog { server 127.0.0.1:8881; server 127.0.0.1:8882; }Supervisor 守護(hù)進(jìn)程
使用 supervisor 守護(hù)進(jìn)程軟件來管理服務(wù),包括啟動暫停重啟等操作
[program:blogapi1] directory=/var/www/api.xfly.one/s1 command=/var/www/api.xfly.one/s1/production-blog autostart=true autorestart=true startsecs=5 user=root redirect_stderr=true stdout_logfile=/var/log/supervisord/blogapi1.log [program:blogapi2] directory=/var/www/api.xfly.one/s2 command=/var/www/api.xfly.one/s2/production-blog autostart=true autorestart=true startsecs=5 user=root redirect_stderr=true stdout_logfile=/var/log/supervisord/blogapi2.log部署腳本
部署腳本也很簡單,總的思路就是循環(huán)關(guān)掉其中一個服務(wù),更新,然后再重新開啟。
#!/bin/bash make SERVER_IP="xfly@127.0.0.1" SERVER_DIR="/var/www/api.xfly.one" for i in 1 2 do ssh $SERVER_IP "supervisorctl stop blogapi$i" scp production-blog $SERVER_IP:$SERVER_DIR/s$i ssh $SERVER_IP "supervisorctl start blogapi$i" done echo "deploy completed..."
對應(yīng)的 Makefile 代碼如下:
all: production local: gotool go build -v . production: gotool GOOS=linux GOARCH=amd64 go build -o production-blog -v . clean: rm -f blog rm -f production-blog find . -name "[._]*.s[a-w][a-z]" | xargs -i rm -f {} gotool: gofmt -w . go tool vet . 2>&1 | grep -v vendor;true help: @echo "make - compile the source code" @echo "make clean - remove binary file and vim swp files" @echo "make gotool - run go tool "fmt" and "vet"" .PHONY: clean gotool help可能出現(xiàn)的問題
一般安裝 supervisor 直接使用 pip install supervisor 或者使用 easy_install supervisor 即可。
但是,由于 supervisor 目前使用的 3.3.4 及以下版本還不兼容 python3,所以如果服務(wù)器使用的是 python3,那么得先裝個 python2.7 或更低版本的,然后用 python2.7 安裝。
此時如果服務(wù)器存在多個版本的 python,可以使用命令 python -m pip install supervisor 來指定 pip 使用的 python 版本。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40191.html
摘要:我們將在本章介紹如何在一臺機(jī)器上構(gòu)建多節(jié)點的方案和未來礦池產(chǎn)品設(shè)計的一些思路。本文將介紹一種直接在單機(jī)上部署和管理多節(jié)點的方案。最初起源于比特幣。 歡迎大家來到第六章,經(jīng)過前章《【Filecoin源碼倉庫全解析】第五章:檢索市場及檢索礦工》的介紹,無論從定位職能,還是從設(shè)計原理,還是從工程操作角度,我們應(yīng)該對目前的Filecoin檢索市場有了更加深入的了解。 我們將在本章介紹如何在一臺...
摘要:簡單理解一個完整的調(diào)用鏈包含無限極分類追蹤對象,一個代表了一個服務(wù)或者流程在系統(tǒng)中的執(zhí)行過程,如,,等執(zhí)行過程。無限極分類服務(wù)與服務(wù)之間使用無限極分類的方式,通過頭部或者請求地址傳輸?shù)阶畹蛯?,從而把整個調(diào)用鏈串起來。 showImg(https://segmentfault.com/img/remote/1460000011636962?w=2239&h=1202); 原文:Uber分...
閱讀 3529·2021-11-22 11:59
閱讀 945·2021-09-27 13:36
閱讀 3603·2021-09-24 09:47
閱讀 2251·2021-09-01 11:39
閱讀 970·2021-08-31 09:37
閱讀 2304·2021-08-05 10:01
閱讀 1665·2019-08-30 15:55
閱讀 693·2019-08-30 15:54