Banana Pi 64๋ Raspberry Pi์ ์ ์ฌํ ๋จ์ผ ๋ณด๋ ์ปดํจํฐ์ด์ง๋ง ์ฌ๋ฌ ์ด๋๋ท ํฌํธ๊ฐ ์์ด ๋ฒ์ฉ Linux ๋ฐฐํฌ ๋ผ์ฐํฐ๊ฐ ๋ฉ๋๋ค.
์, Openwrt๋ ์ด๋ฏธ ์กด์ฌํ์ง๋ง ์์ฒด GUI์ CLI๊ฐ ์์ต๋๋ค. Mikrotik์ด ์์ง๋ง ๋ค์ ์์ฒด GUI / CLI๊ฐ ์์ผ๋ฉฐ Wireguard๋ ์ฆ์ ์๋ํ์ง ์์ต๋๋ค ... ์ผ๋ฐ์ ์ผ๋ก ์์ ํ๋ ํ์ค Linux์ ํ๋ ์ ์ํฌ ๋ด์์ ์ ์ฐํ ์ค์ ์ ๊ฐ์ง ๋ผ์ฐํฐ๋ฅผ ์ํฉ๋๋ค ๋งค์ผ.
BPI, R64, ๋จ์ผ ๋ณด๋๋ผ๋ ์ด๋ฆ์ ๊ธฐ์ฌ์์ Banana Pi R64 ๋จ์ผ ๋ณด๋ ์์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด๋ฏธ์ง ์ ํ. eMMC๋ฅผ ํตํด ๋ค์ด๋ก๋
์ผํ ๋ ๊ฐ์ฅ ๋จผ์ ์ต๋ํ๋ ๊ธฐ์
USB-UART๋ฅผ ํตํ R64 ์ฐ๊ฒฐ ์๊ณ ๋ฆฌ์ฆ:
- USB-UART ์ผ์ด๋ธ(PL2303, Serial-to-USB)์ฉ ๋ผ๋์ค ๋ถํ ๋งค์ฅ์ผ๋ก ์ด๋
- ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด USB ํ์ชฝ ๋์ ์ปดํจํฐ์ ์ฐ๊ฒฐํ๊ณ ๋ค๋ฅธ ์ชฝ UART๋ฅผ R64์ ์ฐ๊ฒฐํฉ๋๋ค.
- ์ปดํจํฐ ์ฝ์์์ ์คํ
sudo minicom
๊ทธ ํ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋จ์ผ ๋ณด๋ ์ฝ์์ด ๋ํ๋ฉ๋๋ค = ์ฑ๊ณต.
์์ธํ ๋ด์ฉ์ ๋ณด์ค ์ ์์ต๋๋ค
๋ค์์ผ๋ก ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ SD ์นด๋์์ ์ด์ ์ฒด์ ๋ฅผ ๋ก๋ํ๋ ๊ฒ์
๋๋ค.
unzip -p 2019-08-23-ubuntu-16.04-lite-preview-bpi-r64-sd-emmc.img.zip | pv | sudo dd of=/dev/mmcblk0 bs=10M status=noxfer
์ฐ๋ฆฌ๋ ์นด๋๋ฅผ R64 SD ์ฌ๋กฏ์ ์ฝ์ ํ๊ณ ์ ์์ ์ผ ๋ค์ ์ฐ๊ฒฐ๋ ์ฝ์์์ ๋จผ์ uboot ๋ก๋ฉ์ ๊ด์ฐฐํ ๋ค์ ํ์ค Linux ๋ถํ ์ ๊ด์ฐฐํฉ๋๋ค.
๋์ฒด ๋ถํ
์ต์
์ eMMC๋ผ๊ณ ํ๋ R64์ ์ด๋ฏธ ๋ด์ฅ๋ 8Gb ์นด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ํค์ ์ง์นจ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ์ฅ์น์ ๋ค์ ์๋๋ค.
/dev/mmcblk0 to BPI, ์ฌ๋ถํ
, SD ์นด๋ ์ ๊ฑฐ, BPI ๋ค์ ํ์ฑํ... ๊ทธ๋ฆฌ๊ณ ์๋ํ์ง ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋์ฐฉํ๋ ๋ฐฉ๋ฒ Boot select
์ฐธ์ง ๋ง.
์ฌ์ค ์ต์ํ BPI์ ๊ฒฝ์ฐ ๋ด๋ถ ํ๋์ ๋๋ผ์ด๋ธ์์ ๋ถํ ํ๋ ค๋ฉด ํน์ ํ๋๊ทธ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x00]
root@bpi-r64:~# ./mmc bootpart enable 1 1 /dev/mmcblk1
root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x48]
๋ค์์ผ๋ก ํน์ ๋ถํธ ํํฐ์ ์ ํ๋ฆฌ๋ก๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
root@bpi-r64:~# echo 0 > /sys/block/mmcblk0boot0/force_ro
root@bpi-r64:~# dd if=preloader_evb7622_64_foremmc.bin of=/dev/mmcblk0boot0
R64 ์ ์กฐ์
์ฒด(์ค๊ตญ)๊ฐ ์ด ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฒ์ํ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ทธ ํ์ eMMC์์ ์ด๋ฏธ์ง๊ฐ ๋ก๋๋๊ธฐ ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ํ์
ํ๊ณ ์ฒ์๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ ๊ฒฝ์ฐ ๋ชจ๋ (SD / eMMC) ์ปค๋์ ๋๋ฌํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ํ์ผ (SD ์นด๋ ์ฉ ํ๋ฆฌ ๋ก๋, ATF, u-boot)์ ๋ ์์ฑํด์ผํฉ๋๋ค ์ ๋ณ. ์ด ์ฃผ์ ๋ ์์ง
์ง๊ธ์ ์์งํ eMMC๋ค์ด๋ก๋ ์์ฐ๊ณ SD์นด๋๋ฉด ์ถฉ๋ถํ์ง๋ง ์๋์ํค๋ ๋ฐ ๊ฝค ๋ง์ ์๊ฐ์ ๋ค์์ผ๋ ๊ธฐ์ฌ์ ์ฐ๋๋ก ํฉ์๋ค.
์ด์ ์ฒด์ ์ ํ. ์๋ฅด๋น์์ด
์ฒซ ๋ฒ์งธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ฌผ๋ก Wireguard์ ๊ฐ์ VPN์ ์์ํ๋ ๊ฒ์ ๋๋ค. ์ปค๋ ์ธก์์ ์กฐ๋ฆฝ๋์ง ์์๊ณ ํค๋๋ ์๋ค๋ ๊ฒ์ด ์ฆ์ ๋ฐํ์ก์ต๋๋ค. ์ปค๋์ ์ฌ๊ตฌ์ถํ๊ณ ์ต๊ด์ ์ผ๋ก x86์ ์ฌ์ฉํ์ฌ DKMS๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ ๋ชจ๋์ ๋น๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์๊ท๋ชจ ์ ํธ๋ฆฌํฐ์์๋ arm64์ ์กฐ๋ฆฝ ์๋์ ๋๋์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ๋ค๋ฅธ ์ปค๋ ๋ชจ๋์ด ํ์ํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ปค๋๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ์ ํ๋ธ x86 ๋ฉํฑ์์ ์กฐ๋ฆฝํ ๋ค์ ๊ฐ๋จํ ๋ณต์ฌ, ์ฌ๋ถํ ๋ฐ ํ ์คํธ๋ฅผ ํตํด R64๋ก ์ ์กํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉ์ ๊ณต๊ฐ ๋ถ๋ถ์ ๋๋ค. ๋ฐ๋น์์ ์ ํํ ๊ฒฝ์ฐ์๋ arm64 ์ํคํ ์ฒ์ ๋ํ ๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ packages.debian.org์ ์์ผ๋ฉฐ ์๋ฌด ๊ฒ๋ ๋ค์ ๋น๋ํ ํ์๊ฐ ์์ต๋๋ค.
๋ค๋ฅธ ์์ ๊ฑฐ๋ฅผ ์์ฐํ์ง ์๊ธฐ ์ํด, ๋๋
๋๋ ์คํ๋ ค: ์ฌ์ฉ์ ๊ณต๊ฐ ๋ถ๋ถ์ Armbian์ด๊ณ ์ฝ์ด๋ ์ ์ฅ์์์ ๊ฐ์ ธ์ต๋๋ค.
R64์ ์ํํธ์จ์ด ๋ถ๋ถ ๊ฐ๋ฐ์ ๋ํ ๋ชจ๋ ํ๋์ ๋ค์์์ ์ํ๋ฉ๋๋ค.
์์ ๊ณต๊ฐ ๊ตฌ์ฑ: ์์ด์ด
์ด์๋ ๋ณ๋๋ก ์ธํฐ๋ท ์์ค์์ ์ ์ฒด ๋ฐฉ / ์ฌ๋ฌด์ค์ ํตํด ์ด๋๋ท ์ผ์ด๋ธ์ ์ฐ๊ฒฐํ์ง ์๋๋ก ๊ฐ๋ฐ / ํ ์คํธ ์ค์ SBC (BPI๋ฟ๋ง ์๋๋ผ)๋ฅผ ํ ์ด๋ธ์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ฌ์ค ํํธ์ผ๋ก๋ ์ฒ ์กฐ๊ฐ์ ์ธํฐ๋ท์ ์ ๊ณตํด์ผํ๊ณ ๋ค๋ฅธ ํํธ์ผ๋ก๋์ด ์ฒ ์กฐ๊ฐ, ํนํ Wi-Fi์์ ๋ชจ๋ ๊ฒ์ด ๊นจ์ง ์ ์์ต๋๋ค.
๋จผ์ ์ ๋ ดํ USB-Wifi "ํํ๋"์ ๊ตฌ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ BPI์ ์ ์ผํ ํฌํธ์ ์ฐ๊ฒฐํ๊ณ ์ ์ ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ ๋ ดํ TP-LINK TL-WN725N USB 2.0์ ๊ตฌ์ ํ์ง๋ง ๊ณง ์ด๋ฅํ์ง ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ํํ๋์ด ์๋ํ๋ ค๋ฉด ๋ฌผ๋ก ๊ฑฐ๊ธฐ์ ์์๋ ์ปค๋ ๋๋ผ์ด๋ฒ๊ฐ ํ์ํ์ต๋๋ค. (๋์ค์ ํ์ํ RTL8XXXU ๋๋ผ์ด๋ฒ๋ฅผ ์ปดํ์ผํ์ง๋ง ์ฌ์ ํ ๋น์ค์ฉ์ ์ ๋๋ค.) ๊ทธ๋ฆฌ๊ณ ์ด๋๋ท ์ผ์ด๋ธ์ ํ๋์ ๋ฐฉ์ ์ ๋ง์ ๋ง์ณค์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ Tenda MW3(Wifi ๋ฉ์ฌ ์์คํ )์ ๋์์ผ๋ก ์ผ์ด๋ธ์ ์ ๊ฑฐํ ์ ์์์ต๋๋ค. ํ ์ด๋ธ ์๋์ ํ๋ธ ํ๋๋ฅผ ๋๊ณ BPI๋ฅผ ๋ฏธํฐ ์ด๋๋ท ์ผ์ด๋ธ๋ก ํ์์ LAN ํฌํธ์ ์ฐ๊ฒฐํ์ต๋๋ค. ์ฑ๊ณต.
์์ด์ด๊ฐ๋, RKN, ์
์ ๊ฐ Banana PI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ค ํ๋๋ ํนํ RKN์ ์ํด โโ์ฐจ๋จ๋ ์ฌ์ดํธ์ ๋ฌด๋ฃ๋ก ์ก์ธ์คํ์ฌ Telegram๊ณผ Slack์ ๋ํ ํธ์ถ์ด ์๋ํ๋๋ก ํ๋ ๊ฒ์
๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ๊ธฐ์ฌ๋ ์ด๋ฏธ Habrรฉ์์ ์ ์๋์์ต๋๋ค.
Ansible์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์๋ฃจ์
์ ๋ฐฐํฌ๋ฅผ ๊ตฌํํ์ต๋๋ค.
VPS๋ Ubuntu 18.04๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ ๋ฝ์ ๋ ํธ์คํ ์ ์ฒด์ธ Amazon๊ณผ Digital Ocean์์ ์ฑ๋ฅ์ ํ์ธํ์ต๋๋ค.
๊ทธ๋์ ์์ Armbian์ R64์ ์ค์นํ๋๋ฐ, ์ด๋ฆ์ผ๋ก ssh๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค. hm-bananapi-1
์ธํฐ๋ท ์ ์์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ฐจ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ ์๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐํฌํ๊ณ R64์์ ์ค์น ์์ฒด๋ฅผ ์คํํฉ๋๋ค.
# ะทะฐะฒะธัะธะผะพััะธ ะดะปั Debian-based ะดะธัััะธะฑััะธะฒะพะฒ
$ sudo apt install --no-install-recommends python3-pip python3-setuptools python3-wheel git
$ which pip3
/usr/bin/pip3
# ansible ั pybook, ัะบัะธะฟัะพะฒะฐะฝะธะต ะฝะฐ Python
$ pip3 install https://github.com/muravjov/ansible/archive/ansible-2.10.0.dev0-pybook2019.tar.gz
$ export PATH=~/.local/bin:$PATH
$ which ansible-playbook
/home/sa/.local/bin/ansible-playbook
$ git clone https://github.com/muravjov/ansible-bpi-r64.git
$ cd ansible-bpi-r64
$ git submodule update --init
# ัะฑะตะถะดะฐะตะผัั ะฒ ะดะพัััะฟะฝะพััะธ hm-bananapi-1
$ ssh hm-bananapi-1 which python3
/usr/bin/python3
# ัะพะฑััะฒะตะฝะฝะพ ัััะฐะฝะพะฒะบะฐ
$ ansible-playbook ./router.py -l hm-bananapi-1
๋ค์์ผ๋ก ๋์ผํ ๋ฐฉ์์ผ๋ก VPN์ VPS์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
ansible-playbook ./router.py -l current-vpn
์ฌ๊ธฐ์ ์ธ์๋ ํญ์ current-vpn์ด๊ณ VPS ์ด๋ฆ ์์ฒด๋ ๋ณ์์ ๊ตฌ์ฑ๋ฉ๋๋ค(์ด ๊ฒฝ์ฐ paris-vpn-aws-t2-micro-1).
$ grep current_vpn group_vars/all
current_vpn: paris-vpn-aws-t2-micro-1
#current_vpn: frankfurt-vpn-d0-starter-1
์, ์ด ๋ชจ๋ ์์
์ ์ํํ๊ธฐ ์ ์ ํด๋์ ๋น๋ฐ(ํนํ Wireguard ํค)์ ์์ฑํด์ผ ํฉ๋๋ค. ./secrets
, ๋๋ ํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
Python์ Ansible ์๋ํ
YAML ํ์ ๋์ Ansible ๋ช ๋ น์ด Python ์คํฌ๋ฆฝํธ๋ก ์ธ์ฝ๋ฉ๋์ด ์์์ ์ ์ ์์ต๋๋ค. ๋น๊ต๋ฅผ ์ํด ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ โโ๋ฐ๋ชฌ์ ํ์ฑํํ๋ ๋ฐฉ๋ฒ:
- name: start bird
systemd:
name: bird
state: started
enabled: yes
Python์ ํตํด ๋์ผํ ๋ฐฉ๋ฒ:
with mapping:
append("name", "start bird")
with mapping("systemd"):
append("name", "bird")
append("state", "started")
append("enabled", "yes")
Python ์ฝ๋๋ก Ansible ๋ช ๋ น์ ์์ฑํ๋ฉด ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฒ์ฉ ์ธ์ด์ ๋ชจ๋ ๊ฐ๋ฅ์ฑ์ด ์ด๋ ค ์์ต๋๋ค. ์๋ฅผ ๋ค์ด R64 ๋ฐ VPS์ ์๋ฅผ ์ค์นํ๋ ๊ฒฝ์ฐ:
install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")
ํจ์ ์ฝ๋ ์ฐธ์กฐ
์ด ๊ธฐ๋ฅ์ pybook
๊ตฌํ
๊ทธ๋ ์ด๋ป๊ฒ ์๊ฐํ๋?
๋ชจ๋ํฐ๋ง. ํ๋ก๋ฉํ ์ฐ์ค
ํฉ๊ณ: ํ ๋ ๊ทธ๋จ ์๋, linkedin ๋ฐ pornhub๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ด ๊นจ์ง ์ ์๊ณ ์ค๊ตญ ์ฒ ์กฐ๊ฐ๋ ์์ต๋๋ค.
์ปค๋ ์ ๋ฐ์ดํธ๋ ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ปค๋ 5.4 => 5.6์ ์ ๋ฐ์ดํธํ๊ณ ์ถ์์ต๋๋ค. Wireguard๊ฐ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ํจ์นํ ํ์๊ฐ ์์ต๋๋ค. 5.4, ์ปค๋์ด ์์๋๊ณ VPS์ ๋ํ ํฐ๋์ด ํ๋์์ง๋ง ์๊ฐ "BGP ์ค๋ฅ" ์ค๋ฅ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋คโฆ 5.6์ผ๋ก์ ์ด๋์ด TODO์์ ์ฐ๊ธฐ๋์์ต๋๋ค.
๋ฐ๋ผ์ ๋ผ์ฐํฐ์ VPS๋ฅผ ์ค์นํ๋ ๊ฒ ์ธ์๋ ๋ค์ ๊ตฌ์ฑ ์์์ ํจ๊ป ๋ณ๋์ ํธ์คํธ์ ์ค์น๋๋ ๋ชจ๋ํฐ๋ง(x86 Ubuntu 18.04)์ ์ถ๊ฐํ์ต๋๋ค.
- prometheus, alertmanager, blackbox_exporter - ๋ชจ๋ ๋์ปค์ ์์
- ๊ฒฝ๊ณ ๋ metalmatze/alertmanager-bot ๋ด์ ์ฌ์ฉํ์ฌ ํ ๋ ๊ทธ๋จ ์ฑ๋๋ก ์ ์ก๋ฉ๋๋ค.
- ์ธํฐ๋ท์ ์ฌ์ฉํ ์ ์์ง๋ง ํ ๋ ๊ทธ๋จ์ด ์ฌ์ ํ ์๋ํ์ง ์๊ณ ๋ด ์์ฒด๊ฐ ์ฐ๊ฒฐํ ์ ์์ ๋ ๋ด์ด ์ํฉ์ ๊ฒฝ๊ณ ํ ์ ์๋๋ก ๋ด์ฉ tor
- ์ ์ฉ๋
์๋ฆผ : NodeVPNTroubles(VPS์ ๋ํ ping ์์), BirdVPNTroubles(Bird ์ธ์ ์์), AntifilterDownloadTroubles(์ฐจ๋จ๋ IP ์ฃผ์ ๋ก๋ ์คํจ), SiteTroubles(๋ถํํ ์ ๋ณด ์ฌ์ฉ ๋ถ๊ฐ) - HostGrowingDiskReadLatency์ ๊ฐ์ ์์คํ ๊ฒฝ๊ณ (์ ๋ ดํ SD ์นด๋ ์ฝ๊ธฐ ์ค์ง)
๋ชจ๋ํฐ๋ง ์ค์ ์์:
ansible-playbook ./monitoring.py -l monitoring-preprod
prometheus์ ๋ํ ์๋ ๊ฒ์์ ๋ชจ๋ํฐ๋ง์ ํธ์คํธ๋ฅผ ์ถ๊ฐํ๋ ์์ธ /etc/prometheus/auto_http ํด๋๋ก ์ค์ ๋ฉ๋๋ค(ํธ์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ํฐ๋ง๋์ง ์์).
bash << 'EOF'
HOSTNAME=hm-bananapi-1
IP_ADDRESS=`ssh -G $HOSTNAME | awk '/^hostname / { print $2 }'`
ssh monitoring-preprod sudo sponge /etc/prometheus/auto_http/$HOSTNAME.json << EOF2
[
{
"targets": ["$IP_ADDRESS:9100"],
"labels": {
"env": "prod",
"hostname": "$HOSTNAME"
}
}
]
EOF2
EOF
TODO: ๊ณต๊ธ์ 2๊ฐ, BPI 2๊ฐ, ์ ๋์บ์คํธ ์ฅ์ ์กฐ์น
๋ชจ๋ ๊ฒ ์ธ์๋ ํ ๊ณต๊ธ์๊ฐ ๋คํธ์ํฌ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์ธํฐ๋ท ๋น์ฉ ์ง๋ถ์ ์์๊ฑฐ๋ ๊ธฐํ ์ธ์ ์์ธ์ด ์๋๋ผ๋ ์ธํฐ๋ท์ด ๊ณ์ ์๋ํ๋๋ก ๋ ๊ณต๊ธ์์ ์ฐ๊ฒฐํ ๊ณํ์ด์์ต๋๋ค.
๋ค์ค ์ ์ฃผ์ ์ ๋ํ ๊ฐ์ฅ ์ง๋ณด๋ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ค๋ช
๋ฉ๋๋ค.
์ด ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์ ๋ ๋ฉํฐํธ๋ฐ์ด ์์ง ์ฐ์ ์์๊ฐ ์๋๋ผ ์ฅ์ ์กฐ์น์ผ ๋ฟ์ด๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์ต์ ๋ฒ์ ์ Linux์์๋ ๋ชจ๋ ๊ฒ์ด ๋ค์๊ณผ ๊ฐ์ ํ๋์ ๋ช ๋ น์ผ๋ก ์๋ํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5
๋ฐ๋ผ์ ๋จ์ผ ์ฅ์ ์ง์ ์ด ์๋๋ก 2๊ฐ์ BPI๋ฅผ ๊ฐ์ ธ์ ๊ฐ๊ฐ ํ๋์ ๊ณต๊ธ์์ ์ฐ๊ฒฐํ๊ณ ํจ๊ป ์ฐ๊ฒฐํ๊ณ bird/OSPF๋ฅผ ํตํ ๋์ ๋ผ์ฐํ ์ผ๋ก ์๋ก ํต์ ํฉ๋๋ค.
๋ํ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ(์ธํฐ๋ท, DNS) ๋์ผํ IP ์ฃผ์๋ฅผ ๊ฐ๊ฐ ๋ฐํํฉ๋๋ค. ์ฆ, ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํ์ง ์๊ณ ์๋ฅผ ํตํด ์ง์ ํฉ๋๋ค. ์๋ฃจ์
์ผํ
์ด ๊ธฐ๋ฅ์ ์์ง ๊ตฌํ๋์ง ์์๊ณ ๊ตํํ ์ฝ๋ก๋ ๋ฐ์ด๋ฌ์ค๊ฐ ์๋ง์ด๋์์ต๋๋ค (๋ชจ๋ ๊ฒ์ด aliexpress์์ ์จ ๊ฒ์ ์๋๋๋ค. ๋ค๋ฅธ ์จ๋ผ์ธ ์์ ์ธ Layta๋ ์ผ์ฃผ์ผ ์์ ๋ฐฐ์กํ๊ฒ ๋ค๊ณ ์ฝ์ํ๊ณ ํ ๋ฌ ์ด์์ด ์ง๋ฌ์ต๋๋ค. ๋ ๋ฒ์งธ ๊ณต๊ธ์๋ ํ์ฅํ์ง ๋ชปํ์ต๋๋ค. ๊ฒ์ญ ์ ์ ์ผ์ด๋ธ์ ๋ซ๊ธฐ ์ํด ๋ฒฝ์ ๊ตฌ๋ฉ์ ๋ซ๋ ๋ฐ๋ง ์ฑ๊ณตํ์ต๋๋ค).
R64 ์ฃผ๋ฌธ ๋ฐฉ๋ฒ
๊ณต์ ๋งค์ฅ์ ๋ณด๋ ์์ฒด
์ฆ์ ์ฃผ๋ฌธํ๋ ๊ฒ๋ ์ข์ต๋๋ค.
์์ + EU ๋๋ US ํ๋ฌ๊ทธ ํ์ค์ ์๋ฆผ- ๋ฐฉ์ดํ: ๋ผ๋์์ดํฐ/ํฌ; CPU์ ์ค์์น ์นฉ์ด ๋ชจ๋ ๊ฐ์ด๋๊ธฐ ๋๋ฌธ์
- ์์ดํ์ด ์ํ
๋,
์๋ฅผ ๋ค๋ฉด
๋์์ค๊ฐ ์์ต๋๋ค. ๊ณต์ ์์ ์์ ์ธ์ ๊ฐ๋ถํฐ ๋ฐฐ์ก ๊ฐ๊ฒฉ์ด ๋ถ์ ์ ํ๊ฒ ๋์์ก์ต๋๋ค. Judy Huang ๋งค๋์ ๋ ์ค์๊ฐ ์์ผ๋ฉฐ $5์ ePacket์ ์ ํํ ์ ์๋ค๊ณ ํ์ ํ์ง๋ง ๋ฌ์์์ ๊ฒฝ์ฐ >33$์ EMS๋ง ์์์ ํ์ธํ์ต๋๋ค. ๋ถ์พํ์ง๋ง ์ค์ํ์ง๋ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ๋ฐฐ์ก์ ์ํด ๋ค๋ฅธ ๊ตญ๊ฐ๋ฅผ ์ ํํ๋ฉด(์ ๋ ๋ชจ๋ ๋๋ฅ์ ๊ฑฐ์ณค์ต๋๋ค) ๋ฐฐ์ก๋น๋ ~5$์ ๋๋ค. Russophobes?.. ๊ทธ๋ฐ๋ฐ ํ๋์ค ๋ฐฐ์ก๋น๋ ~$30์ธ ๊ฑธ ์๊ฒ ๋์๊ณ , ์ง์ ๋์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก Judy๋ ์ฃผ๋ฌธ์ ์ ์ํ์ง๋ง ์ง๋ถํ์ง ์์์ต๋๋ค (๋น์น๋ค: ๊ฒฐ์ ๊ฐ ์๋์ผ๋ก ์งํ๋์ง ์๋๋ก ์นด๋์ ์ ๊ฒ ๋ฃ์ต๋๋ค.) ๊ทธ๋ ์๊ฒ ํธ์ง๋ฅผ ์ฐ๋ฉด ๋ฐฐ์ก๋ฃ๋ฅผ ์ ์์ผ๋ก ๋ฎ์ถ ๊ฒ์ ๋๋ค. ์ฑ๊ณต.
๋ฌธ์
์์ง ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ ๊ฒ์ ์๋๋๋ค.
ะัะพะธะทะฒะพะดะธัะตะปัะฝะพััั
Ansible=Python ๋ช ๋ น์ด 20-30์ด ๋์ ๋๋ฆฌ๊ฒ ์คํ๋ฉ๋๋ค. x86 ๋ ธํธ๋ถ๋ณด๋ค ํจ์ฌ ๋ ๊น๋๋ค. ๋ํ ์ฒ์์๋ ~ 3 ์ด ๋์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ค์ ๊ธ๊ฒฉํ ๋๋ ค์ง๋๋ค. ์๋ง๋ ์ด๊ฒ์ CPU์ ๋ฐ์ด(์ค๋กํ๋ง) ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค. Go ์ฝ๋๋ ์ค๋ ์คํ๋ฉ๋๋ค.
# ะทะฐะฟัะพั ะผะตััะธะบ ะดะปั ะฟัะพะผะตัะตั ะธะท node_exporter ะฝะฐ Go
$ time curl -s http://172.30.1.1:9100/metrics > /dev/null
real 0m6,118s
user 0m0,005s
sys 0m0,009s
# ะพะดะฝะฐะบะพ ัะตะผะฟะตัะฐัััะฐ 51 ะณัะฐะดัั, ะฝะต ัะฐะบ ะธ ะผะฝะพะณะพ
sa@bananapir64:~$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
51700
๋ฌด์ ๋
Wi-Fi๋ ์๋ํ์ง๋ง ์ฝ ํ๋ฃจ ํ์ Armbian์์ ๋ฉ์ถฅ๋๋ค.
sa@bananapir64:~$ dmesg | grep -E 'mt7622_wmac.*timeout'
[470303.802539] mt7622_wmac 18000000.wmac: Message 38 (seq 3) timeout
[470314.042508] mt7622_wmac 18000000.wmac: Message 50 (seq 4) timeout
...
์ฌ์์๋ง ๋์์ด ๋ฉ๋๋ค. ๋ ๋์๊ฐ์ผ ํด
Ethernet
์ด๋๋ท์ ์๋ํ์ง๋ง ~ ํ๋ฃจ ํ R64์ ํจํท(DHCP) ์์ ์ด ์ค์ง๋ฉ๋๋ค.
์ธํฐํ์ด์ค๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ค์์ด ๋์์ด ๋ฉ๋๋ค.
ifdown br0; sleep 30; ifup br0
๋๋ผ์ด๋ฒ๊ฐ ์๋กญ๊ณ ์ปค๋์ด ์์ง ์น์ธ๋์ง ์์์ต๋๋ค. ์ค๊ตญ Landen Chao๊ฐ
์ถ์ฒ : habr.com