일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Error
- AWS
- port
- Query
- ntp
- fdisk
- DELETE
- deragistration
- onpromise
- resize2fs
- centos
- xen
- 아마존
- 센토스
- Linux
- VPN
- ubuntu
- DISK
- RDS
- x-real-ip
- x-forward-for
- EBS
- nvme
- awscli
- 리눅스
- Windows
- EC2
- 인스턴스타입
- terraform
- mysql
- Today
- Total
목록분류 전체보기 (84)
Cloud
node 백엔드에서 원격지 웹서버의 client IP header 를 가져오는데 127.0.0.1 (undefinded) 라는 헤더값이 온다고 연락 받았습니다. 제가 proxy.conf 를 잘못 설정했나 var/log/nginx access로그를 보니 1.1.1.1 - - [30/Sep/2024:17:04:51 +0900] "POST /api/v1/aa HTTP/1.1" 200 8770 "-" "BestHTTP/2 v2.8.4" "-"2.2.2.2 - - [30/Sep/2024:17:05:04 +0900] "POST /api/v1/bb HTTP/1.1" 200 8770 "-" "BestHTTP/2 v2.8.4" "-" 값은 잘 찍히고 있었습니다. 이로 미루어 보아 헤더값이 제대로 나올 것 같다는 합리적..
테라폼을 온프라미스에서도 적용할 수 있는지 질문을 받았습니다. 하이퍼 바이저를 사용하지 않고 적용한다는 것은 별로 생각해 보지 않았고, 적용을 했을 때라도 자원을 논리적으로 프로비저닝 할 수 없으니, 그다지 효율적이지는 않아 보입니다. 그래도 안정성은 그대로 가져가면서, 자동화의 영역을 넓힐 수 있다면 안할 이유도 없어 보입니다. 단 tf 파일이 삭제될때는 어떻게 동작될지도 확인이 필요합니다.(그리고 언제적 PXE 기술을 꺼내는 것인지.)대략적인 구성을 생각해 본다면 1. IPMI 는 IP 할당 완료 ID/PW 설정 완료 2. PXE 서버 설정 (DHCP,TFTP,HTTP,FTP) 3. 테라폼 세팅 4. Kickstart 파일 설정 (윈도우는 prep) ks.cfg 하이퍼바이저를 통하지 않고 IPMI ..
RDS 구독 메세지를 테라폼을 적용해서 사용 중인데 리소스를 찾지 못했던 경험을 공유 합니다.이번에는 source_ids 를 정할때 aws 의 ids 가 아닌 identifier 를 입력해야 합니다. 자꾸 ids 를 다시 확인하라고 해서, 문제 해결에 시간이 걸렸습니다. 문법이나 내용은 맞는 것 같은데 실제 리소스를 찾지 못할때는 아래처럼 환경 설정이 어떻게 되어 있나 확인하고 적절한 리소스를 대입해서 찾아보면 좋습니다. terraform state show aws_db_instance.logdb01 정상적으로 rds 에 sns 구독을 연결 시키는 코드입니다.resource "aws_sns_topic" "rds_events_topic" { name = "rds-events-topic"}resource..
쿠버네티스를 운영하다 보면 어떤 이유에서든지 크래시난 pod 가 여러개 있습니다.가끔 일괄로 삭제하게 되는데 하나씩 하게 되면 너무 시간이 걸리기 때문에, 이럴때는 awk와 xarg 로 삭제하면 편합니다. ## 특정 에러만 삭제 kubectl get pods | grep 'Init:CrashLoopBackOff' | awk '{print $1}' | xargs kubectl delete pod ## 정상 메세지 이외 삭제 kubectl get pods --no-headers --field-selector=status.phase!=Running,status.phase!=Succeeded | awk '{ print $1};' | xargs kubectl delete pod
AWS 인프라를 오래 사용하다 보니, 4세대 인스턴스들의 사양을 변경 할 경우가 발생하였습니다.기존에 cluster 되어 있는 서비스들이었기 때문에 placement 그룹으로 묶어 놨던 서버들입니다. 사양 변경 내역을 확인하고 AWS-CLI 에서 일괄 배치를 돌렸는데 자원부족으로 타입 변경 에러가 발생하는 것을 확인하였습니다. 처음에는 감을 못잡고 좀 헤메다가 placement 그룹이 해제된다는 것을 발견! ( 제 기억으로는 예전에 해제가 되지 않았습니다.) 바로 해제하고 변경을 완료하였습니다. (아마존링크 참고)클러스터 배치 그룹의 모든 인스턴스를 중지합니다.영향을 받는 인스턴스의 인스턴스 유형을 변경합니다.클러스터 배치 그룹의 모든 인스턴스를 시작합니다.이렇게 가이드 되어 있는데, 그냥 하나씩 해..
프로젝트에 게임서버 롤링 업데이트가 필요하여 젠킨스 CI/CD를 이용하여 1대씩 패치를 진행하기로 하였습니다.이를 위해 aws elbv2 로드밸런서의 타겟 그룹에서 한대씩 deregistration 이 필요합니다.명령어는 아래와 같습니다. 기존에 있던 Deply code 에 target instance 들을 한대씩 번갈아 가며 세팅하게 하였으며, 그레이스풀하게 빠지는 시간에 맞춰 sleep 설정 하였습니다. (aws config 는 미리 설정되어 있어야합니다.)##REGISTRATIONaws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:072498040640:targetgroup/project/0..
일단 계속 업데이트 할 예정입니다. 완료해서 포스팅 하려니까 자꾸 안하게 되어서요.alert.rule 업데이트 하고 amtool 로 문법체크 하여 줍니다. 더 해야될 것은 채널에 이름나올떄 alertmanager 가 아니라 각 채널의 이름이 나오는 것과, Annotations.description 을 못가지고 오는 것 같은데, 왜 그런지 확인 하는 부분이 남아있습니다. ( {{ $labels.name }} 으로 가져오면 됩니다.) global: resolve_timeout: 5m slack_api_url: "https://hooks.slack.com/services/ap1" # global Slack API URLroute: group_by: ['alertname'] group_wait: 30s..
사설 가상 서버에서는 rocky 이미지로 설치 후에 별다른 이상없이 SSH 접속이 가능하였으나, 최근 AWS EC2 에서 rocky 9 이미지 설치 후에 기본 private key 로 접속이 되지 않는 현상이 발생하였다.userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] 여러 SSH 클라이언트(securecrt, xshell, putty) 로 테스트해본 결과 로키 리눅스에서 ssh 접속만 가능하고 나머지는 auth methods 가 모두 실패하는 현상이 발생하였다. 구글링을 해보니 최신 리눅스는 regacy encryption 을 지원하지 않는 것 같았다.해결 방법으로는 클라이언트 메소드를 바꾸거나 reqacy 를 지원..
젠킨스 파이프라인에서 여러개의 docker-compose 설정을 하던 중, 컴포즈 한개가 실행되고 다음 컴포즈 실행을 하면 먼저실행된 도커가 죽는 문제가 발생하였습니다. (run 되지 않음) docker network inspect 로 자세히 살펴보니 docker network 가 두번 째 컴포즈가 실행될때 삭제되고 새로세팅되는 것을 확인 하였습니다. 디렉토리안에 하나의 컴포즈가 있을 때에는 network 가 재 설치되도 문제가 없지만, 이미 기동하고 있는 컨테이너가 있는 상황이라면 기동중인 컨테이너가 exit 되는 상황이 생깁니다. 해결방법은 다른 디렉토리로 변경하거나, 사용 네트워크를 다르게 지정하는 방법이 있습니다. 디렉토리 변경은 확인을 했으나 각각의 네트워크를 다르게 지정하는 것은 테스트 하지 ..
SSL 테스트 방법은 일반 25번 포트를 이용하는 것과 다르게 인코딩 ID/PW 를 입력해야 한다. 먼저 ID / PW 를 인코딩 한다 $ echo -ne "username" | base64 dXNlcm5hbWU= $ echo -ne "password" | base64 cGFzc3dvcmQ= 그 후 서버 접속 openssl s_client -connect 서버주소:465 AUTH LOGIN 후에 334 VXNlcm5hbWU6 (username인코딩된 상태) dXNlcm5hbWU= 334 UGFzc3dvcmQ6 (password인코딩된 상태) cGFzc3dvcmQ= 235 Authentication successful 이후 본문 body 입력 MAIL FROM: 보낸사람 250 Sender address ..
몽고디비의 기본 계정을 설정하면 root 권한이 없어 전체 backup을 할 수 없습니다. 기본 권한으로 mongosh 에 접속하셔서 아래처럼 따로 root 를 지정하시면 됩니다. mongotop 및 mongodb compass 의 performance 도 볼 수 있는 권한이 생깁니다. use admin db.createUser({ user: 'USER_NAME', pwd: 'INPUT_PASSWORD', roles: [ { role: 'root', db: 'admin' } ] }); 아래는 DB 응답 Successfully added user: { "user" : "USER_NAME", "roles" : [ { "role" : "root", "db" : "admin" } ] }
#!/bin/bash # redis-cli를 통해 Redis DB 세션데이터 초기화 for num in {0,1,2};do redis-cli -h 20.194.44.191 -n $num flushdb;done
#!/usr/bin/env python3 -u import winrm hosts = {'$hostname':'$ip'} user_id = '$id' user_pw = '$password' file_compress_cmd = ''' e:\gamepub\cygwin\cygnative find /cygdrive/e/game/servers -type f -name "*.log" -mtime +2 -mtime -5 -exec 'gzip -v' {} ; ''' file_move_cmd = ''' e:\game\cygwin\cygnative rsync -av --include=*.log.gz --exclude=*.* --remove-source-files /cygdrive/e/game/servers/* /cygdri..
#!/usr/bin/env python3 import winrm try: param = argv[1] except: param = "status" hosts = {'$hostname':'$ip'} user_id = '$ID' user_pw = '$password' def run_pwsh_cmd(pwsh_cmd): result_byte = session.run_ps(pwsh_cmd) result = result_byte.std_out.decode('utf-8') return result for hostname, ip in hosts.items(): session = winrm.Session(ip, auth=(user_id, user_pw)) date = run_pwsh_cmd('Get-Date') prin..
기존 사무실에서 Softether VPN 을 잘 사용 하고 있었습니다. 추가로 외부 개발자의 VPN 세팅을 할 일이 있었는데 문제는 이분이 맥 사용자라는 것입니다. Softether VPN 에서 제공하는 L2TP 는 이미 사용 중이어서, 분리 하기가 쉽지 않아 요새 많이 쓰고 있다는 wiregruad VPN 을 세팅했습니다. 특히 Client 프로그램에서 Splite VPN 설정이 손쉬우며 (접근하고 싶은 IP만 ALlowedIPs 로 넣어주면 됩니다.) 많은 OS를 지원하고 있어 편리합니다. 설정이 그리 어렵지는 않지만 서버 사이드에서 설정할떄 주의할 점은, LAN TO LAN 처럼 상대의 Public key 를 맞게 넣어야 합니다. (가장 많이 실수하는 부분) 그리고 클라이언트 사이드에서는 DNS 설..
centos 가 기존의 방식이 변경되고 stream 으로 변경 된 후에 많은 시스템 관리자들이 적절한 OS 를 찾고 있는데요. 우분투가 대안이 되긴 하지만 기존의 centos 와 다른 방식을 가지고 있는 것들이 있기 때문에 선뜻 선택하지는 못합니다. 이에 로키리눅스들이 각 클라우드 사에서 배포판을 제공하고 있는데요. 저도 테스트를 위해 xcp 가상 서버에 로키8버전을 올려서 테스트 해보고, 마이너한 프로젝트의 운영서버에 적용하였습니다. 생각보다 더 centos 를 닮아서 운용하기가 편하네요. (우분투보다 훨씬 더!) 몇몇 달라진 부분들이 있지만 centos 8 에서도 변경된 부분들이었기에 아쉽지만 적응 해야될 것 같습니다. (특히 네트워크 부분 nmcli 같은 것: 우분투는 더 달라서요.) 정리하자면 로..
rds 사용 중에 계정을 추가할 경우가 있습니다. 계정 추가까지는 기존 기존 물리 장비 (iaas) 에서 하던 것처럼 하면 됩니다. 그러나 grant all 옵션이 되지 않아 권한을 하나씩 추가해 주어야 합니다. (rds 에서는 전체 권한을 할당 할수 없으므로 all 옵션이 permission deny 가 발생한 것으로 예상됩니다.) 아래 예시는 new_master_user 생성입니다. 또한 버전은 8버전입니다. 1. 기존처럼 유저 생성 mysql> CREATE USER 'new_master_user'@'%' IDENTIFIED BY 'password'; 2. 권한 할당 (ALL 로 하지 않고 하나씩 할당해 주어야 됨) mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CR..
위에는 시스코 하드웨어 라우터 기존에 사용 중이던 두개의 네트워크 대역에서 관리서버로 접속해야 되는 이슈가 발생하였습니다. 아래 그림을 보면 서브넷 A 에서 서브넷 B에 있는 특정 관리서버에 접속해서 파일을 다운로드 받아야 합니다. L2 스위치에서는 라우팅이 안되므로 방화벽끼리 연결해도 되지만 포트도 부족하고, 운용 중인 장비를 최소한으로 수정하기 위해, 리눅스 라우터를 경유하게 설정하였습니다. 이 방법의 장점은 라우팅 테이블 설정을 하기에 따라서 연결을 제한하거나 확장할 수 있는 점입니다. (물론 다 라우팅 시키고 라우터쪽 방화벽에서 제한해도 됩니다.) 여러 서브넷을 걸치는 것이 아니므로 라우터 설정은 간단합니다. /etc/sysctl.conf net.ipv4.ip_forward = 1 을 추가 하면 ..
php-fpm LISTENER 를 설정하다보면 ini 파일에서 socket 설정을 볼 수 있습니다. tcp/ip 와 unix socket 방식이 있는데, 왜 두가지가 있는지 궁금해서 찾아 본 내용을 기술 합니다. unix socket 방식 장점 tcp에 비해오버헤드가 적다 TCP 통신이 아니기 때문에 open files 갯수에 걸리지 않는다. 단점 webserivce 와 php-fpm 이 동일 머신에 있어야 한다. 프로세스간 통신이기 때문입니다. TCP/IP socket 방식 장점 분리된 서버에서 사용 할 수 있다. 단점 오버헤드가 붙는다 open files 갯수가 증가하면 갯수 제한에 걸릴 수 있다. 65535개 종합적으로 무엇을 하든지 큰 문제가 되지는 않을 것으로 보입니다. 부하가 증가하면 로드밸런..
요새 많이 보이는 텔레그라프 클라이언트 다운로드 방법입니다. 특히 grafana 에서 mysql 등을 모니터링 하기 좋습니다. centos7 설치이며, 다른 방법은 하단의 링크를 클릭하면 확인 할 수 있습니다. wget https://dl.influxdata.com/telegraf/releases/telegraf-1.22.3-1.x86_64.rpm sudo yum localinstall telegraf-1.22.3-1.x86_64.rpm 순서대로 설치하면 됩니다. localinstall 일뿐 기존 yum 과 동일합니다. 기본 서버 접속 설정 telegraf.conf [global_tags] [agent] interval = "60s" round_interval = true metric_batch_size..